C语言50小程序

更新时间:2024-01-29 15:53:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一 基础部分:

1、输入1~10之间的一个数字,输出它对应的英文单词。

/* Note:Your choice is C IDE */ #include \main() { int a;

scanf(\ switch(a) {

case 1:printf(\ case 2:printf(\ case 3:printf(\ case 4:printf(\ case 5:printf(\ case 6:printf(\ case 7:printf(\ case 8:printf(\ case 9:printf(\ case 10:printf(\ default:printf(\

} }

2、用自然语言描述程序逻辑如下,试写程序。 ① 设置环境;

② 定义变量i、j、s,以及用于放置结果的变量sum,并令sum初值为0;

③ i=1;

④ 如果i≤100,则转⑤,否则转⑧;

⑤ 令s=0,求前i个自然数之和,并放于变量s之中; ⑥ sum=sum+s; ⑦ i增加1,转④; ⑧ 输出和sum,结束。 #include void main() {

int i, j, s; long sum = 0;

for ( i = 1; i <= 100; i++ ) { s = 0;

for ( j = 1; j <= i; j++ ) {

s = s + j; }

sum = sum + s; }

printf( \}

3、用自然语言描述的程序逻辑为: ① 设置环境;

② 定义变量i、flag和password,并令flag=0,i=0; ③ 用户回答口令,将其赋于password变量;

④ 口令正确?如果是,则flag=1,转⑥。否则转⑤;

⑤ 回答三次口令了吗?如果没有,计数器加1后(i++),转③,否则转⑥;

⑥ 根据flag之值输出相应信息。 /* Note:Your choice is C IDE */ #include \#define N 20 main() {

float sum=0,c[N],a[N]; int i,k=0,count=0; for(i=0;i0) {count++; a[k++]=c[i];} else continue; for(k=0;k

printf(\}

4、用自然语言描述的程序逻辑如下: ① 设置环境;

② 定义变量digit、x、y分别表示原始数、原始数的个位数和逆数;

③ 输入原始正整数x;

④ 从x中分解出个位数字digit; ⑤ 合并个位digit至逆数y中; ⑥ 原始数x缩小10倍:x=x/10; ⑦ 如果x非零,则转④; ⑧ 输出逆数y,结束

/* Note:Your choice is C IDE */ #include \

main() {

long digit,x,y;/*个位数、原始数、逆数*/ printf(\ scanf(\ digit=x; y=digit; while(x!=0) {

x=x/10; digit=x; y=y*10+digit; }

printf(\ }

5、输入某三角形的三个边的长度,判断出这是个什么三角形(等腰、等边、任意,或不能构成)。 /* Note:Your choice is C IDE */ #include \main() {

float a,b,c,flag;/*flag=0不能,flag=1等边,flag=2等腰,flag=3任意*/

printf(\ scanf(\ if(a+b<=c||a+c<=b||b+c<=a)

flag=0;

else if(a==b&&b==c) flag=1;

else if(a==b||b==c||c==a)

flag=2; else flag=3;

if(flag==0) printf(\ if(flag==1) printf(\ if(flag==2) printf(\ if(flag==3) printf(\}

6、输入10个数,分别统计其中正数、负数、零的个数。 /* Note:Your choice is C IDE */ #include \#define N 10 main() { int a[N];

int i,count1=0,count2=0,count3=0;/*count1记录正数个数,count2记录负数个数,count3记录0的个数*/ printf(\ for(i=0;i

}

scanf(\if(a[i]>0) count1++; if(a[i]<0) if(a[i]==0)

count2++;

count3++;

printf(\count3); }

7、先随机产生N个三位自然数输出,然后再输出其中同时是3、5、7倍数的数。(设N为100) /* Note:Your choice is C IDE */ #include \#define N 100 #include #include main() { int a[N],i;

printf(\ randomize();

for(i=0;i

{ a[i]=random(900)+100; printf(\ }

printf(\ printf(\ for(i=0;i

if(a[i]%3==0&&a[i]%5==0&&a[i]%7==0) }

8、已知x和y存在下列对应关系,要求对输入的每个x值,计算出y值,请编程。

y=0,x=a||x=-a; y=sqrt(a*a-x*x), -a #include void main() { float x,y,a;

printf(\输入A值[A>0]:\ scanf(\ printf(\输入X值:\ scanf(\

printf(\

if ((x==a)||(x==-a)) y=0;

else if ((x-a)) y=sqrt(a*a-x*x); else if ((x<-a)||(x>a)) y=x; printf (\ }

9、计算:1/2-2/3+3/4-4/5??,前100项。 #include \main() { int i;

float sum=0,d=1; for(i=1;i<100;i++) { }

printf(\}

10、从终端输入3个数a、b、c, 按从大到小的顺序输出。 #include main() {

sum+=i*d/(i+1); d=-d;

int i,n; double sum=0;

printf(\请输入一个大于0的偶数:\ scanf(\ for(i=2;i<=n;i+=2) sum=sum+1.0/i; printf(\ }

11、打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方之和等于该数本身。 #include \#include \main() {

int i,j,k,n;

printf(\ for(n=100;n<1000;n++) {

i=n/100;/*分解出百位*/ j=n/10;/*分解出十位*/ k=n;/*分解出个位*/

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

printf(\ } }

12、求下列式子的值:1-1/2+1/3-1/4+……+1/99-1/100,将结果输出。 #include\main() {int n,m; int sum=0;

for(n=1;n<=100;n++) {m=1;if(n%2==0)m=-m; sum+=m/n;} printf(\}

13、编程输入整数a和b,若大于100,则输出百位以上的数字,否则输出两数之和。 #include int main() { int a,b;

printf(\ scanf(\ if((a*a+b*b)>=100)

printf(\ else

printf(\ getch(); }

14、输入学生的成绩,利用计算机将学生的成绩划分出等级并输出:90~100:A级; 80~89:B级; 70~79:C级; 60~69:D级; 0~59:E级; #include void main() { float m;

printf(\输入学生成绩:\\n\scanf(\

if ((m>100)||(m<0)) printf(\数据有误\\n\else if (m>=90) printf(\级\\n\else if (m>=80) printf(\级\\n\else if (m>=70) printf(\级\\n\else if (m>=60) printf(\级\\n\else printf(\级\\n\}

15、把100~200之间的不能被3整除的数输出。

int i=100; while(i<=200) {

if(i%3!=0) {

printf(\ } i++; }

二 数组循环部分:

1、从终端(键盘)读入20个数据到数组中,统计其中正数的个数,并计算这些正数之和。 #include \#include \#define N 20 main() { int a[N],i,sum=0,count=0; for(i=0;i0)

{sum=sum+a[i];

count++;

} }

printf(\

}

2、从终端(键盘)将5个整数输入到数组a中,然后将序复制到数组b中,并输出b中各元素的值。 #include \#include \#define N 5 main() { int a[N],b[N];

printf(\ for(i=0;i

}

printf(\ for(i=0;i

printf(\

a逆

printf(\ for(i=o;i

}

3、一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索找出车号。 /* Note:Your choice is C IDE */ #include \#include \main() {

int i,qw,bw,sw,gw;

for(i=1122;i<=9988;i++) { if(sqrt(i)!=(int)sqrt(i))

continue;

qw=i/1000; bw=i/100;

sw=i/10; gw=i;

if(qw==bw&&sw==gw) { }

printf(\break;

} }

4、 公安人员审问四名窃贼嫌疑犯。已知,这四人当中仅有一名是窃贼,还知道这四人中每人要么是诚实的,要么总是说谎的。在回答公安人员的问题中:甲说“乙没有偷,是丁偷的”, 乙说“我没有偷,是丙偷的”,丙说“甲没有偷,是乙偷的”,丁说“我没有偷”。请根据这四人的答话判断谁是盗窃者。 #include \

main()

{ int i,j,k,l;/*i,j,k,l分别代表甲乙丙丁。1偷0没偷*/ for(i=0;i<=1;i++) for(j=0;j<=1;j++) for(k=0;k<=1;k++) for(l=0;l<=1;l++) if(j+l==1&&j+k==1&&i+j==1&&l==0); }

5、 “百钱百鸡”问题。百钱买百鸡,鸡翁一值钱三,鸡母一值钱二,鸡雏三值钱一,问鸡翁、鸡母、鸡雏各几何? #include \main()

{ int jw,jm,jc;

/*公鸡最多100/3=33只,母鸡最多100/2=50只,小鸡最多300只*/

for(jw=1;jw<=33;jw++) for(jm=1;jm<=50;jm++) for(jc=1;jc<=300;jc++)

if(jw*3+jm*2+jc/3==100&&jw+jm+jc==100) printf(\ }

6、 A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些人参加了竞赛. (1)A参加时,B也参加; (2)B和C只有一个人参加;

(3)C和D或者都参加,或者都不参加;

(4)D和E中至少有一个人参加; (5)如果E参加,那么A和D也都参加。 #include int check(int* nums); int main()

{int a,b,c,d,e,num[5]; printf(\可能的组合是:for(a=0;a<=1;a++) for(b=0;b<=1;b++) for(c=0;c<=1;c++) for(d=0;d<=1;d++) for(e=0;e<=1;e++) { num[0]=a; num[1]=b; num[2]=c; num[3]=d; num[4]=e; if(check(num)) {

if(a==1)printf(\if(b==1)printf(\

\\n\if(c==1)printf(\if(d==1)printf(\if(e==1)printf(\printf(\}; } }

int check(int* nums) {

int a,b,c,d,e; a=nums[0]; b=nums[1]; c=nums[2]; d=nums[3]; e=nums[4];

if(a==1&&b!=1)return 0; if(b==1&&c==1)return 0; if(c==1&&d!=1)return 0; if(c!=1&&d==1)return 0; if(d!=1&&e!=1)return 0; if(e==1&&(a!=1||d!=1))return 0; return 1;

}

7、 输入一个字串,判断它是否是对称串。如”abcdcba”是对称串,”123456789”不是。

8、 随机产生N个大写字母输出,然后统计其中共有多少个元音字符。(设N为200)#include \#include \#include \#define N 200 main() {

int c[N],i,count=0; randomize(); for(i=0;i

printf(\

printf(\

printf(\if(c[i]==a||c[i]==e||c[i]=i|| c[i]==o||c[i]==u) count++;

}

9、 从键盘输入长度不等的两个字串,将长串连接于短串之后输出。 #include \#include \#include \define N 20 main() {

char c1[N],c2[N];

printf(\ gets(c1); gets(c2);

printf(\ if(strlen(c1)strlen(c2)) puts(strlen(c2,c1)); }

10、 从键盘输入两个字串,输出其中较短的那个字串,并

输出它的长度。 #define N 20 #include \#include \ main() {

char c1[N],c2[N];

printf(\ gets(c1); gets(c2);

printf(\ printf(\ if(strlen(c1)==strlen(c2)) { puts(c1); }

if(strlen(c1)

printf(\puts(c2);

printf(\

}

if(strlen(c1)>strlen(c2)) { puts(c2);

printf(\

} }

11、 输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数。 #include main() {

int ch,en=0,n=0,s=0,q=0; clrscr();

printf(\ while((ch=getchar())!='\\n') {

if(ch<='z'&&ch>='a'||ch<='Z'&&ch>='A') en++; else if(ch==' ') s++;

else if(ch<='9'&&ch>='0') n++; else q++;

}

printf(\letters Number: %d\\n Num Number: %d\\n Spaces Number: %d\\n Other Number: %d\\n\ getch(); }

12、 将一个字符串中的元音字母复制到另一字符串,然后输出“另一字符串”。 #include #include

void main(){ int i;

char a[80], b[80]={'\\0'},c[2]={'\\0'}; scanf(\

for(i=0;i<80;i++){ c[0]=a[i]; switch(c[0]){ case 'a':

strcat(b,c);break; case 'e':

strcat(b,c);break;

case 'i':

strcat(b,c);break; case 'o':

strcat(b,c);break; case 'u':

strcat(b,c);break; } } puts(b); }

13、 将字符数组str1种下标为偶数的元素赋给另一字符数组str2,并输出str1和str2。 #include #include #define N 10 void main() { int i,n;

char str1[N],str2[N]; gets(str1); for(n=0;n

{ i=2*n+1;

str2[n]=str1[i]; }

puts(str1); puts(str2); }

14、 输入一行英文,已知各单词之间用1个空格或一个标点符号相隔(设第一个单词前没有空格),统计这行英文有多少个单词。#include \#include \#include \#define N 100 main() {

char c[N];

int i=0,x,count=0;

gets(c);

while(c!='\\0') { x=isalpha(c); if(x==0)

count++; i++; }

printf(\单词数量:%d\}

15、 输入一行字符串,按如下规则加密:如果是英文字母则大写变小写、小写变大写,对非英文字符则保持不变。试写加密程序。 #include

void main()

{char a[20]={\,Come in!\int i;

for(i=0;i<20;i++)

{if(a[i]<=122&&a[i]>=97) {a[i]=a[i]-32; continue;}

if(a[i]<=90&&a[i]>=65) {a[i]=a[i]+32; continue;} else continue; }

for(i=0;i<20;i++) printf(\}

16、 随机产生N个两位自然数,降序排列后输出。(设N为20)

#include \#include \#include \#define N 20 main()

{ int a[N],i,j,temp; randomize(); for(i=0;i

a[i]=random(900)+100;

for(i=0;i

for(j=i+1;j

if(a[j]>a[i])

{ temp=a[i]; }

a[i]=a[j]; a[j]=temp;

for(i=0;i

printf(\

}

17、 求s=a+aa+aaa+aaaa+......+aa...a的值,其中a是1~9之间的一个数字,表达式项数从键盘输入(设不超过10项)。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 #include \main() {

int a,n,count=1; long int sn=0,tn=0;

printf(\ scanf(\

printf(\ while(count<=n) {

tn=tn+a; sn=sn+tn;

a=a*10; ++count; }

printf(\}

18、 求1+12+123+……前n项之和,其中n是从键盘输入的一个数字(1~9)。 #include \#include \#include \main() {

int i,j,s; long sum=0;

for(i=1;i<=100;i++) { s=0;

for(j=1;j<=i;j++) {

s=s+j; }

sum=sum+s; }

printf(\ } 19、 小学生智商测试。让电脑随机出十道100以内整数的加法题(10分/题),小学生从键盘回答答案,统计小学生最后得分。 #include \#include \#include \

define N 20 main() {

int i,a,b,c,s; randomize(); printf(\

for(s=0,i=1;i<=10;i++) {a=random(90)+10; b=random(90)+10; printf(\ scanf(\ if(a+b==c) s=s+10;} printf(\ }

20、 斐氏数列是公元13世纪数学家斐波拉契发明的。即:1,2,3,5,8,13,21,34,55,89,??,输出其前15项。

/* Note:Your choice is C IDE */ #include \main() {

int a,b,c,i; a=1; b=2;

printf(\ for(i=1;i<=13;i++) { c=a+b; a=b; b=c;

printf(\ } }

21、 输入一个十进数,将其转换成 N 进制数(0

int x,y; char ch;

/* 类似十进制转二进制时候的整除方法 */ x = 0; do {

if (value % dest <= 9)

pout[x++] = (value % dest) + '0'; else

pout[x++] = (value % dest - 10) + 'A';

value /= dest; }while(0 != value); pout[x] = '\\0';

/* 颠倒结果字符串 */ x = 0; y = strlen(pout) - 1; while (x < y) {

ch = pout[x]; pout[x] = pout[y]; pout[y] = ch; x++; y--; }

return pout; }

int main(int argc,char *argv[]) {

int value,dest; char res[100]; do {

printf(\数制转换 *****\\n\

printf(\输入要转换的十进制数(非负,0表示退出): \scanf(\

printf(\输入目标数制N(2 <= N <= 16): \scanf(\

printf(\转换结果: %s\\n\\n\\n\ }while(0 != value); system(\ return 0; }

22、 输入n个整数,将其中最小者与第一个数对调,最大者与最后一个数对调。 include\void main() {

int n,a[50],max,min,i,temp; printf(\请输入整数的个数n\\n\

scanf(\

printf(\请输入%d个整数(每个数之间用空格隔开)\\n\ for(i=0;i

} temp=a[0]; a[0]=a[min]; a[min]=temp; for(i=1;i

}

if(a[i]

} if(a[i]>a[max]) {

} min=i; max=i; temp=a[n-1]; a[n-1]=a[max]; a[max]=temp; for(i=0;i

23、 将一个数组中的值按逆序重新存放。例:原来顺序为3,6,5,4,1。要求改为1,4,5,6,3 #include #include main() {

char a[100],t; int i,k; gets(a); k=strlen(a)-1; for(i=0;2*i<=k;i++) {

t=a[i]; a[i]=a[k-i]; a[k-i]=t; }

puts(a); }

24、 键盘输入四个同学的五门课成绩,求出每个学生的平均成绩,输出该数组。 int main(){ float score[4][5]; float avrg[4]; int i,j;

for(i=0;i<4;i++){

printf(\请输入第%d个同学的5门成绩\ for(j=0;j<5;j++)

scanf(\ }

for(i=0;i<4;i++){ int temp=0; for(j=0;j<5;j++) temp+=score[i][j]; avrg[i]=(float)temp/5; }

for(i=0;i<4;i++){

printf(\第%d个同学的平均成绩为:%f\\n\

} return 0; }

25、 从键盘上输入若干学生的一门课成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。 #include int main() {

float min=10000,max=0,n; int i=0; do {

printf(\输入第%d个学生的成绩,输入负数结束\ scanf(\ if(n<0) break; if(n>max) max=n; if(n

printf(\最高成绩为%.4f\\n最低成绩为%.4f\\n\ return 0; }

26、 从键盘上输入若干学生的一门课成绩,计算出平均分,当输入负数时结束输入。将结果输出。 #include \main() {

double cj, avg, sum = 0; int count = 0; while (1 == 1) {

printf(\请输入成绩(负数结束输入):\scanf(\if (cj < 0) break; sum += cj; count ++; }

avg = sum / count;

printf(\平均成绩是:%.1lf\\n\ }

27、 打印以下图案: *******

***** *** * /* Note:Your choice is C IDE */ #include \main() {

int i,j,n;

ptintf (\ shu ru N\scanf(\for (i=1;i<=n,i++) {for (j=1;j<41-i;j++) { }

for (j=1;j<=2*i-1;j++) {

printf(\ }

printf(\

printf (\}

28、 求一个3*3的整型矩阵对角线元素之和。 #include void main() {

int a[3][3],sum=0; int i,j;

printf(\请输入元素:\\n\ for(i=0;i<3;i++) for(j=0;j<3;j++) scanf(\ for(i=0;i<3;i++) sum=sum+a[i][i];

printf(\对角线之和是:%d\\n\ printf(\原矩阵:\\n\ for(i=0;i<3;i++) {

for(j=0;j<3;j++) printf(\ printf(\ } }

29、 求满足1+2+3+…+n<500中最大的N,并求其和,编写程序实现。 #include void main() {

int n=0,sum=0; while(sum<500) { ++n; sum+=n; }

printf(\

printf(\}

44.把100~200之间的不能被3整除的数输出。 #include void main() { int a;

for (a=100;a<=200;a++) if (a%3!=0) printf(\

}

30、 求N的阶乘,N由键盘输入。 #include \ #include \ main() { int i,N; float sum=1; scanf(\ for(i=1;i<=N;i++) sum=sum*i; printf(\ }

三、自定义函数与指针部分:

1、键盘输入长方体的长宽高l、w、h,求其体积及表面积。要求用自定义函数val(l,w,h)计算长方体的体积和表面积,计算结果使用全局变量带回主函数。

#include \float l,w,h,v,s;

void val(float l,float w,float h);

main() {

printf(\ printf(\ scanf(\ printf(\ scanf(\ printf(\ scanf(\

val(l,w,h); }

void val(float l,float w,float h) { s);

}

2、找出三位自然数中的所有素数,要求判断x素数用自定义函数data(x)实现。 #include \

v=l*w*h;

s=2*l*w+2*w*h+2*h*l; printf(\

int data(int x); main() {

for(i=101;i<=999;i++) }

int data(int x) { }

3、输出n行由“#”组成的矩形,每行“#”的个数为m

int i;

for(i=2;i

return 0; { flag=data(i); if(flag==1) }

printf(\int i,flag=0;/*1是,0否*/

if(i==x/2) return 1; else return 0;

个,其中n、m由终端(键盘)输入。要求输出m个“#”功能由函数satr(m)函数实现。 #include \void satr(int m); main() { int i,n,m;

printf(\ printf(\ scanf(\ printf(\ scanf(\

printf(\

for(i=1;i<=n;i++) { } }

void satr(int m) { int i;

satr(m); printf(\

for(i=1;i<=m;i++) }

4、编写程序,建立phone.txt文件,由键盘输入5个人的姓名、手机号码、家庭住址,写入该文件中。

#include #include struct data {

char name[20]; char phone[20]; char address[20]; } people[5]; int main() { FILE *p; int i;

p=fopen(\ if(p==NULL) {

printf(\打开文件失败\\n\

printf(\

exit(0); }

for(i=1;i<=5;i++) {

printf(\输入第%d个人的信息,空格顿开,回车结束\\n\

scanf(\s);

fwrite(&people[i],sizeof(people[i]),1,p); fprintf(p,\ } fclose(p); return 0; }

5、输出某二维数组中各元素的内存地址及其值。 #include int main() {

int a[4][4],i,j;

for(i=0;i<=3;i++)//给数组随便赋值 for(j=0;j<=3;j++) {

a[i][j]=j;

printf(\ 地址:%p\\n\ } return 0; }

2

/* 建立一个结构体,该结构体描述书本的信息:

(书名、作者、出版社、单价)。要求声明一个结构体数组(长

度为N,N值为5),

从键盘输入每本书的相关信息,求出这N本书的平均单价并

输出。*/ #include \#define N 5 struct Book {

char Name[20];

}

char Author[10]; char Publisher[20]; int price;

main() {

struct Book book[N]; int i;

float sum=0,average;

for(i=0;i

printf(\scanf(\scanf(\scanf(\scanf(\sum+=book[i].price;

}

average=sum/N;

printf(\

}

/*请将一个寝室(6人)的学生信息(姓名、学号、班级、性别、籍贯)

从键盘录入到磁盘文件test.txt中。 提示:结构体+文件指针。*/ #include \#define N 6 struct Student {

char Name[10]; char ID[10]; char Class[10]; char Sex[2]; char Addr[10];

}stu[N];

main() { }

FILE *fp; int i;

fp=fopen(\

for(i=0;i

fclose(fp);

printf(\scanf(\scanf(\scanf(\scanf(\scanf(\

fwrite(&stu[i], sizeof(struct Student), 1, fp); fputc('\\n',fp);

本文来源:https://www.bwwdw.com/article/qs4w.html

Top