初學的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閏年列印
閏年的求取過程中最重要的就是掌握滿足閏年的條件。 3.2個數的交換#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; }
#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