C语言使用指针实现分支,C语言-指针、数组、结构体、分支、循环混合使用

1、写一个程序,输出如下内容:

1 //#############################################################2 //### name number math english computer ###3 //### zhanghua ,9901, 80.5, 87.0, 80.0 ###4 //### lina ,9902, 70.0, 80.0, 90.0 ###5 //### wanggang ,9903, 87.0, 76.0, 78.0 ###6 //#############################################################

程序代码:

1 structscore{2        char *name;3       intnumber;4       floatmath;5        floatenglish;6        floatcomputer;7        };8

9 struct score sc[3] ={10 {"zhanghua", 9901, 80.5, 87, 80},11 {"lina", 9902, 70, 80, 90},12 {"wanggang", 9903, 87, 76, 78},13 };14 printf("name number math english computer\n");15

16 for (int i=0; i<3; i++) {17 printf("%-9s,%d,%10.1f,%10.1f,%10.1f\n",sc[i].name, sc[i].number,sc[i].math,sc[i].english,sc[i].computer);18 }

回车后输出:

1 name number math english computer2 zhanghua ,9901, 80.5, 87.0, 80.0

3 lina ,9902, 70.0, 80.0, 90.0

4 wanggang ,9903, 87.0, 76.0, 78.0

5 Program ended with exit code: 0

2,计算2+4+6+8+。。。+100

1 int sum = 0;2 for (int i=2; i<=100; i+=2) {3 sum+=i;4 }5 printf("2+4+6+8+...+100=%d.\n",sum);

回车后输出:

1 2+4+6+8+...+100=2550.2 Program ended with exit code: 0

3、计算1到100之间的奇数和与偶数和

1 int jsum = 0;2 int osum = 1;3

4 for (int i=1 ;i<=100 ; i++) {5 if (i%2) {6 jsum+=i;7 }else{8 osum+=i;9 }10 }11

12 printf("jsum=%d,\tosum=%d\n", jsum, osum);

回车后输出:

1 jsum=2500, osum=2551

2 Program ended with exit code: 0

4、求1到100的非素数之和

1 int sum = 0;2 int j= 0;3 for (int i=1; i<=100; i++) {4 for (j=2; j

回车后输出:

1 jsum=2500, osum=2551

2 Program ended with exit code: 0

5、调用子函数实现1到100的非素数和,其中子函数判断数字是否非素数,如果非素数,则返回

主函数:

1 int sum = 0;2 for (int i = 1 ; i<=100; i++) {3 sum +=sushu(i);4 }5 printf("%d\n", sum);

子函数:

1 int sushu(intn){2 inti;3 for (i=2; i

输出:

1 3990

2 Program ended with exit code: 0

6、有一个四位正整数,组成着四个正整数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位数互换,组成一个新的四位数,原来四位数刚好是新四位数的4倍,求这样的四位数:

1 int a = 0;2 int b = 0;3 for (int i=1; i<10; i++) {4 for (int j=0; j<10; j++) {5 for (int k=0; k<10; k++) {6 for (int l=1; l<10; l++) {7 a=1000*i+100*j+10*k+l;8 b=1000*l+100*k+10*j+i;9 if (a==4*b && i!=j &&j!=k && k!=l) {10 printf("%d\t",a);11 }12 }13 }14 }15 }16 printf("\n");

输出:

1 8712

2 Program ended with exit code: 0

7、两个乒乓球队进行比赛,各处三个人,甲队为A,B,C三人,乙队为X,Y,Z三人,其中A不和X比,C不和X,Z比,请编程找出三对赛手的名单:

1 //设A=1,B=2,C=3.

2

3 intx,y,z;4 for (x=1; x<4; x++) {5 for (y=1; y<4; y++) {6 for (z=1; z<4; z++) {7 if ((x+y+z)==6 && (x!=1) && (x!=3) && (z!=3) &&(x!=y) && (y!=z)) {8 printf("x=%d\ty=%d\tz=%d", x, y, z);9 }10 }11 }12 }

输出:

x=2 y=3 z=1Program ended with exit code:0

8、对一个3*3的二维数组进行转置,即行列互换

1    int a[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};2 int tmp = 0;3

4 for (int i=0; i<3; i++) {5 for (int j=i+1; j<3; j++) {6 tmp =a[i][j];7 a[i][j] =a[j][i];8 a[j][i] =tmp;9 }10 }11

12 for (int i=0; i<3; i++) {13 for (int j=0; j<3; j++) {14 printf("%d\t",a[i][j]);15 }16 printf("\n");17 }

输出:

1 1 4 7

2 2 5 8

3 3 6 9

4 Program ended with exit code: 0

9、输入20个正整数,判断是否素数,如果是则排序。

主函数:

1 int a[20] = {0};2 int b[20] = {0};3

4 printf("请输入20个正整数\n");5

6 for (int i=0; i<20; i++) {7 scanf("%d",&a[i]);8 b[i] =sushu(a[i]);9 }10

11 rank(b, 20);12

13 for (int i=0; i<20; i++) {14 if (b[i]>0) {15 printf("%d\t",b[i]);16 }17 }18

19 printf("\n");

rank()子函数(使用选择法排序):

1 void rank(int *p, intn){2 int max = 0;3 int tmp = 0;4 for (int i=0; i

12 if (i!=max) {13 tmp = *(p+max);14 *(p+max) = *(p+i);15 *(p+i) =tmp;16 }17 }18 }

10、输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数:①输入10个数;②进行处理;③输出10个数。

主函数:

1 int a[10] = {0};2 printf("请输入十个数:\n");3 inputnum(a);4 deal(a, 10);5 output(a, 10);

输入、输出、处理子函数:

1 //输入十个数子函数

2 void inputnum(int *a){3

4 for (int i=0;i<10 ; i++) {5 scanf("%d",&a[i]);6 }7

8 }9

10 //处理函数:将其中最小的数与第一个数对换,把最大的数与最后一个数对换

11 void deal(int *p, intn){12 int max=0,min=0;13 int tmp=0,i=0,j=0;14 max=i;15 for (i=0; i

20 }21 tmp = *(p+max);22 *(p+max) = *(p+0);23 *(p+0) =tmp;24

25 min=j;26 for (j=0; j*(p+j)) {28 min=j;29 }30 }31

32 tmp = *(p+min);33 *(p+min) = *(p+n-1);34 *(p+n-1) =tmp;35 }36

37 //输出函数

38 void output(int *p, intn){39 for (int i=0; i

11、使用子函数对数列排序:

主函数:

1 intmain() {2

3 int a[5] = {90, 50, 80, 70, 60,};4

5 rank(a,5);6

7 for (int i=0; i<5; i++) {8 printf("%d\t", a[i]);9 }10

11 printf("\n");12

13 return 0;14 }

子函数:

1 void rank(int * p, intn){2

3 int max = 0;4 int tmp = 0;5

6 for (int i=0; i

12、有n个学生,每个学生的数据包括学号(num),姓名(name[20]),性别(sex),年龄(age),

三门课的成绩(score[3])。要求在main函数中输入这n个学生的数据,  然后调用一个函数count,在该函数中计算出每个学生的总分和平均分, 然后打印出所有各项数据(包括原有的和新求出的)。

1 inti;2 floats0,s1,s2;3

4 struct student a[3];5

6 for(i=0;i<3;i++) {7 scanf("%d%s %c%d%f%f%f",&a[i].num, a[i].name, &a[i].sex,&a[i].age, &s0, &s1, &s2);8 a[i].score[0]=s0;a[i].score[1]=s1;a[i].score[2]=s2;9 printf("%d %s %c %d %4.1f %4.1f %4.1f\n",a[i].num,a[i].name, a[i].sex,a[i].age,a[i].score[0],a[i].score[1],a[i].score[2]);10 }11 count(a,3);12 printf("=============================================\n");13 printf("NO name sex age score[0] score[1] score[2] total ave\n");14

15 for(i=0;i<3;i++)16 printf("%d  %s  %c  %d  %5.1f  %5.1f %5.1f %5.1f %5.1f\n", a[i].num,a[i].name,a[i].sex,a[i].age,a[i].score[0], a[i].score[1],a[i].score[2],a[i].total,a[i].ave);17

18

19 return 0;

结构体定义:

1 structstudent2 {3 intnum;4 char name[20];5 charsex;6 intage;7 float score[3];8 floattotal;9 floatave;10 };

count()子函数:

1 void count(struct student * b,intn) {2 inti,j;3 for(i=0;i

原文:http://www.cnblogs.com/jiwangbujiu/p/5294607.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值