1. 程式人生 > >初學的c語言一些簡單的練習題(自我練習)

初學的c語言一些簡單的練習題(自我練習)

1.列印99乘法表
<pre name="code" class="cpp">#include<stdio.h>
int main(){
	int i, j;
	for (i = 1; i <= 9; i++){
		for (j = 1; j <= i; j++){
					printf("%d*%d=%d\t", j, i, i*j);
				if (i == j){
					printf("\n");
				}
				
				}
		}
	system("pause");
	return 0;


}


以上是實現99乘法表的列印,用了2個for語句迴圈很容易實現。

2.列印100-200之間的素數

#include<stdio.h>
#include<math.h>
int main()
{
	int i, j;
	int m;
	for (i = 101; i <= 200; i = i + 2){

		m = 0;

		for (j = 2; j < sqrt(i); j++)
		{
			if (i%j == 0)
			{
				m = 1;
				break;
			}

		}
		if (m == 0)
			printf("%d是素數\n", i);
	}

	system("pause");
	return 0;}

在素數的求取過程中用到了sqrt()這個庫函式,在使用sqrt()這個函式之前必須加上#include<math.h>這個標頭檔案才能使用,在c語言中有很多的庫函式需要我們積累,這會在我們在實現某些功能時提供方便。

另外在程式編寫時要注意程式的優化,我們不僅僅要把程式的功能實現,還需要使這個程式最簡單,最效率。

3.1000-2000閏年列印

#include<stdio.h>
int main(){
	int i;
	for (i = 1000; i <= 2000; i++)
	{
		if (i % 4 == 0 && i % 100 != 0||i%400==0)
		{
			printf("%-5d",i);
		}
	}
	system("pause");
	return 0;
	
	


}
閏年的求取過程中最重要的就是掌握滿足閏年的條件。 3.2個數的交換
#include<stdio.h>
int main()
{ int i = 10;
  int j = 20;
  int m = 0;
  printf("i=%d\tj=%d\n",i, j);
  m = i;
  i = j;
  j = m;
  printf("i=%d\tj=%d\n",i, j);
  system("pause");
  return 0;
}
在2個數的交換過程中用了一個用來保護的中間變數。 這個問題還可以不用中間變數 具體如下
#include<stdio.h>
int main()
{
	int i = 10;
	int j = 20;
	printf("i=%d\tj=%d\n", i, j);
	i = i^j;
	j = i^j;
	i = i^j;
	printf("i=%d\tj=%d\n", i, j);
	system("pause");
	return 0;

    }
其中用了一個異或,2個數異或之後產生的值就好比密碼一樣,可以在把原值找回來,從而達到交換的目的。 4.寫一個函式返回引數二進位制中 1 的個數:
#include <stdio.h>
int  count_one_bits(unsigned int x);
int main()
{
	int a,b;
	scanf_s("%d", &a);
	b=count_one_bits(a);
	printf("%d",b);
	system("pause");
	return 0;
}
int  count_one_bits(unsigned int x)
{
	int count=0;
	while (x)
	{
		count += x % 2;
		x = x / 2;
	}
	return count;
	
}
其中用了一個while迴圈使x的值又移即x/2,從而使x的值一直驅於0,從而跳出迴圈,在又移的過程對x進行取餘,從而求出用二進位制表示形式。 在此過程中需要注意的是數的左移右移,在數的左移時不管邏輯左移還是算術左移後邊補得都是0,但是在右移過程中就不同了,在邏輯右移中左邊都加0,但在算術右移時左邊新增的東西和符號位有關,新增的就是符號位,而取邏輯還是算術和編譯器有關,所以在上題中就要注意有符號和和無符號的右移。 5.10個數中找最大值
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
int main()
{
	int i;
	int a[10] = {0};
	
	printf("請輸入10個數");
	for (i = 0; i < 10; i++)
	{
		scanf("%d",&a[i]);
	}
	int max = a[0];
	for (i = 1; i <=9; i++)
	{
		if (max < a[i])
		{
			max = a[i];
		}
	}
	printf("max=%d", max);
	system("pause");
	return 0;
}
其中用了一個一維陣列,注意一維陣列的賦初值與一維陣列的輸入。

相關推薦

初學c語言一些簡單練習題自我練習

1.列印99乘法表<pre name="code" class="cpp">#include<stdio.h> int main(){ int i, j; for (i = 1; i <= 9; i++){ for (j = 1; j

初學python的一些簡單程序2

eric not in mov AS int pen != 必須 light 1)判斷兩個列表內容相同的元素 l1=[11,22,33] l2=[22,33,44] for i in l1: if i in l2: print(i) 2)獲取l1

C++/C語言入門簡單教程深圳中學科學聯盟信息學會

else span 形式 空間 程序 入門 個數 編譯器 所有 首先我們要明白什麽叫編程。編程就是把想要計算機做的任務用代碼的形式表現出來,然後編譯成計算機能理解的語言(機器語言)。關於編程和計算機基礎的具體內容這裏不復述,可以在深圳中學科學聯盟公眾號發布的文章中查閱。

c語言一些簡單的演算法(還會不定期更新)

/* *統計字串中字元個數 *string 字串 */ int length(char *string){ int len = 0; while(!(*string == '\0')){ string++; len++; } return len; } /* *把字串中的數字

C語言簡單排序選擇排序

一、演算法框圖 二、程式碼實現 /******************** 名稱:選擇排序 作者:豆豆 ********************/ #include<stdio.h> #define LENGTH 6 //巨集定義數列長度為

C一些簡單習題10--n階勒讓德多項式

//n階勒讓德多項式#include <stdio.h>float p(float x,int n){float p_n; if(0==n) {p_n=1;} else if(1==n) {  p_n=x; } else {  p_n=((2*n-1)*x-p(x

c語言實現按層次廣度優先非遞歸遍歷二叉鏈樹

child str sizeof att col std 二叉樹 頭結點 oot 1 #include<stdio.h> 2 #include<conio.h> 4 #include<malloc.h> 5 typedef cha

2004: C語言實驗——數日子數組

我們 這一 post HR submit 某年 inpu 時間 ret 2004: C語言實驗——數日子 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 213 Solved: 111[Submit][Status][Web

C語言占位符待完善

tps %u c語言 語言 待完善 csdn 有效 article 指數 %c       讀入一個字符 %s       讀入一個字符串,遇到空格制表符或者換行符時結束。 %d       讀入一個十進制整數 %x或者%X    讀入一個十六進制整數 %o      

C語言實驗——判斷素數迴圈結構

Problem Description 從鍵盤上輸入任意一個正整數,然後判斷該數是否為素數。 如果是素數則輸出"This is a prime." 否則輸出“This is not a prime.” Input 輸入任意一個正整數n(1 <= n <= 1000000)。

c語言基礎-變量整型

可用 我們 固定 字節數 有符號 borde 輸入 c語言 長整型 一、整型變量 類型 關鍵字 取值範圍 存儲單元字節數(非固定) 輸出 有符號整型 [signed] int -2147483648~2147483647 4 %d 無符號整型 unsign

PAT C語言 1027 列印沙漏 20 分

PAT C語言 1027 列印沙漏 (20 分) #include<stdio.h> int main() { int n,M; char c; scanf("%d %c", &n, &c); /* 獲得上三角共有多少行 這

c語言實現簡易通訊錄連結串列

首先,這是本人第一次寫部落格。不當之處,望請見諒!(腦補一個doge) 最近在學習C語言,並實現了 下面連結中 簡易通訊錄的功能。區別是:我是用連結串列實現了其所有功能。並增加了檔案儲存模組! 本人初來乍到,c功底不是很紮實,且是第一次用c寫小專案,雖然實現了所有功能,但程式碼中定會有很多需

1117-C語言實驗——求絕對值選擇結構-JAVA

C語言實驗——求絕對值(選擇結構) Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 從鍵盤上輸入任意一個整數,然後輸

基於C語言的編碼器光耦程式設計之C程式碼解析

程式碼需要一個.c文件和一個.h文件。 .h文件主要配置編碼器相關引數 #define OptoKnobNumber 2 /* 旋鈕個數配置 */ #define _01_SH

C語言實現快速排序遞迴

#include<stdio.h> void Split(int left,int a[],int right); int Quicksort(int left,int a[],int right); int main() { int N; scanf("

C語言學習|陣列習題10.17

特殊函式 1.exit(1):退出整個程式,終止程序,返回1給作業系統(返回0表示正常退出,其餘數表異常) 程式碼 猜隨機數 #include <stdio.h> #include <stdlib.h> #include <time

C語言程式設計 細節總結連結串列

12 連結串列 12.1 連結串列概述 1.採用動態儲存分配的一種重要資料結構,一個連結串列中儲存的是一批同類型的相關聯資料 2.動態分配時,每個結點之間可以不連續,結點之間的聯絡可以用指標實現,每個結點分兩個域:資料域和指標域 12.2 處理動態連結串列所需函

c語言實現不使用a + b / 2這種方式,求兩個數的平均值

//不使用(a + b) / 2這種方式,求兩個數的平均值     解題思路:                    1> 先判斷是奇數還是偶數;                    2> 將a,b之和右移一位;                    3

PTA|C語言:螺旋方陣20分

7-65 螺旋方陣 (20 分) 所謂“螺旋方陣”,是指對任意給定的N,將1到N×N的數字從左上角第1個格子開始,按順時針螺旋方向順序填入N×N的方陣裡。本題要求構造這樣的螺旋方陣。 輸入格式: 輸入在一行中給出一個正整數N(<10)。 輸出格式: 輸出N×N