1 有一个函数, 写一段程序,输入的值,输出的值。#

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <stdio.h>
void main()
{
int x,y;
printf ( "输入x:" );
scanf ( "%d" ,&x);
if (x<0||x>100)
{
y=-1;
printf ( "x=%3d, y=%d\n" ,x,y);
}
else if (x==0)
{
y=0;
printf ( "x=%d, y=%d\n" ,x,y);
}
else
{
y=1;
printf ( "x=%d, y=%d\n" ,x,y);
}
}
|
2 输入3个数a,b,c,按大由到小的顺序输出 #
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include <stdio.h>
void main ( )
{
float a,b,c,t;
printf ( "please enter a,b,c:" );
scanf ( "%f,%f,%f" ,&a,&b,&c);
if (a<b)
{
t=a;
a=b;
b=t;
}
if (a<c)
{
t=a;
a=c;
c=t;
}
if (b<c)
{
t=b;
b=c;
c=t;
}
printf ( "%7.2f%7.2f%7.2f\n" ,a,b,c);
}
|

3 输入4个数,输出4个数中的最大值、最小值。#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #include <stdio.h>
void main()
{
float t,a,b,c,d;
printf ( "请输入四个数:" );
scanf ( "%f,%f,%f,%f" ,&a,&b,&c,&d);
if (a<b)
{
t=a;
a=b;
b=t;
}
if (a<c)
{
t=a;
a=c;
c=t;
}
if (a<d)
{
t=a;
a=d;
d=t;
}
if (b<c)
{
t=b;
b=c;
c=t;
}
if (b<d)
{
t=b;
b=d;
d=t;
}
if (c<d)
{
t=c;
c=d;
d=t;
}
printf ( "最大值和最小值分别为: \n" );
printf ( "max=%5.2f min=%5.2f" ,a,d);
}
|

4 输入成绩,要求输出成绩等级A、B、C、D、E或error。90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,0~60分为‘E’。若输入成绩低于0分和高于100分则输出error。 #
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #include <stdio.h>
void main()
{
float score;
char grade;
printf ( "请输入学生成绩:" );
scanf ( "%f" ,&score);
if (score>100||score<0)
printf ( "error\n" );
else
{
switch (( int )(score/10))
{
case 10:
case 9:
grade= 'A' ;
break ;
case 8:
grade= 'B' ;
break ;
case 7:
grade= 'C' ;
break ;
case 6:
grade= 'D' ;
break ;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
grade= 'E' ;
}
printf ( "成绩是 %5.1f,相应的等级是%c.\n " ,score,grade);
}
}
|

5 有一个函数:写一段程序,输入x的值,输出y的值。#

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <stdio.h>
void main()
{
int x,y;
printf ( "输入x:" );
scanf ( "%d" ,&x);
if (x<1)
{
y=x;
printf ( "x=%3d, y=x=%d\n" ,x,y);
}
else if (x<10||x>10)
{
y=2*x-1;
printf ( "x=%d, y=2*x-1=%d\n" ,x,y);
}
else
{
y=3*x-11;
printf ( "x=%d, y=3*x-11=%d\n" ,x,y);
}
}
|
6 输出300~400之间的全部素数,并按每行5个数输出。#
方法一:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | #include "stdio.h"
#include"math.h"
void main()
{
int prime( int );
int i,k,m;
printf ( "300~400之间的素数为:\n" );
for (i=300; i<=400; i++)
{
m=prime(i);
if (m==1)
{
k++;
printf ( "%5d" ,i);
if (k%5==0)
printf ( "\n" );
}
}
}
int prime( int i)
{
int j,flag=1;
for (j=2; j<= sqrt (i); j++)
if (i%j==0)
flag=0;
return (flag);
}
|

方法二:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # include <stdio.h>
# include <math.h>
void main()
{
int m,k,i,n=0;
for (m=300; m<=400; m=m+1)
{
k= sqrt (m);
for (i=2; i<=k; i++)
if (m%i==0) break ;
if (i>=k+1)
{
printf ( "%d " ,m);
n=n+1;
}
if (n%5==0) printf ( "\n" );
}
printf ( "\n" );
}
|

7求Fibonacci数列的前20个数,并将其分5行输出#
扩展:求 F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <stdio.h>
#include <stdlib.h>
int fun( int x)
{
if (x == 0 || x == 1)
return 1;
if (x > 1)
return fun(x - 1)+fun(x - 2);
}
void main()
{
int n,f;
printf ( "请输入n:" );
scanf ( "%d" ,&n);
f = fun(n);
printf ( "%d" ,f);
}
|

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include<stdio.h>
int main()
{
int i;
int f[20] = { 1,1 };
for (i = 2; i < 20; i++)
f[i] = f[i - 2] + f[i - 1];
for (i = 0; i < 20; i++)
{
if (i%5==0)
printf ( "\n" );
printf ( "%d\t" ,f[i]);
}
return 0;
}
|

8 求(1!+3)+(2!+3)+(3!+3)+......+(n!+3)#

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <stdio.h>
void main()
{
double t=1,sum=0;
int n,i;
printf ( "输入n:" );
scanf ( "%d" ,&n);
for (i=1; i<=n; i++)
{
t=t*i;
sum=t+3+sum;
}
printf ( "1!+3+...+%d!+3=%f\n" ,n,sum);
}
|

9 有一分数序列,求其前20项的和#

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <stdio.h>
void main()
{
int i,n=20;
double a=2,b=1,s=0,t;
for (i=1; i<=n; i++)
{
s=s+b/a;
t=a,
a=a+b,
b=t;
}
printf ( "sum=%16.10f\n" ,s);
}
|
10 输出小于500的所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为#

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <stdio.h>
void main()
{
int i,j,k,n;
printf ( "parcissus numbers are " );
for (n=100; n<500; n++)
{
i=n/100;
j=n/10-i*10;
k=n%10;
if (n==i*i*i + j*j*j + k*k*k)
printf ( "%d " ,n);
}
printf ( "\n" );
}
|

11 给一个不多于6位的正整数,要求:①求出它是几位数;②分别输出每一位数字;③按逆序输出各位数字,例如原数为158,应输出851。#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include "stdio.h"
void main()
{
int n,m;
printf ( "输入一个不多于六位的数字:" );
scanf ( "%d" ,&n);
if (n<1000000&&n>99999)
printf ( "它是六位数\n" );
if (n<100000&&n>9999)
printf ( "它是五位数\n" );
if (n<10000&&n>999)
printf ( "它是四位数\n" );
if (n<1000&&n>99)
printf ( "它是三位数\n" );
if (n<100&&n>9)
printf ( "它是二位数\n" );
if (n<10&&n>=0)
printf ( "它是一位数\n" );
printf ( "各位数字按逆序输出为:\n" );
while (n!=0)
{
m=n%10;
n=n/10;
printf ( "%3d" ,m);
}
}
|

12 求5+55+555+5555+55555的值。#
1 2 3 4 5 6 7 8 9 10 11 12 | #include <stdio.h>
void main()
{
int a=5,n=5,i=1,sn=0,tn=0;
for (i=1; i<=n; i++)
{
tn=tn+a;
sn=sn+tn;
a=a*10;
}
printf ( "a+aa+..+aaaaa=%d\n" ,sn);
}
|

13 输入10个整型整数,用起泡法对这10个数排序,并该由小到大顺序在屏幕上输出。#
方法一:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include "stdio.h"
void main()
{
int a[10];
int i,j,t;
printf ( "input 10 number:\n" );
for (i=0; i<10; i++)
scanf ( "%d" ,&a[i]);
for (i=0; i<9; i++)
for (j=0;j<9-i;j++)
if (a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
};
for (i=0; i<10; i++)
printf ( "%5d " ,a[i]);
printf ( "\n" );
}
|

方法二:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include "stdio.h"
void main()
{
int a[10];
int i,j,t;
printf ( "input 10 number:\n" );
for (i=0; i<10; i++)
scanf ( "%d" ,&a[i]);
for (i=0; i<10; i++)
for (j=i; j<9; j++)
if (a[i]>a[j+1])
{
t=a[i];
a[i]=a[j+1];
a[j+1]=t;
};
for (i=0; i<10; i++)
printf ( "%5d " ,a[i]);
printf ( "\n" );
}
|
14 将一个二维数组a的行和列的元素互换(即行列互换),存到另一个二维数组b中。#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include "stdio.h"
void main()
{
int a[4][5],b[5][4];
int i,j;
for (i=0; i<4; i++)
for (j=0; j<5; j++)
scanf ( "%d" ,&a[i][j]);
for (i=0; i<5; i++)
for (j=0; j<4; j++)
b[i][j]=a[j][i];
printf ( "该数组的新序列为:\n" );
for (i=0; i<5; i++)
{
for (j=0; j<4; j++)
printf ( "%5d" ,b[i][j]);
printf ( "\n" );
}
}
|

15 在一个3*4的二维数组a中,要求编程求出其中值最大的那个元素的值,并输出其所在的行号和列号。#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include "stdio.h"
void main()
{
int a[3][4],i,j,max;
for (i=0; i<3; i++)
for (j=0; j<4; j++)
scanf ( "%d" ,&a[i][j]);
max=a[0][0];
for (i=0; i<3; i++)
for (j=0; j<4; j++)
if (max<a[i][j])
max=a[i][j];
printf ( "max=%d\n" ,max);
for (i=0; i<3; i++)
for (j=0; j<4; j++)
if (a[i][j]==max)
printf ( "行=%2d,列=%2d\n" ,i+1,j+1);
}
|

16 输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。#
1 2 3 4 5 6 7 8 9 10 11 | #include "stdio.h"
void main()
{
int i,j=0;
char str[80];
gets (str);
for (i=0; str[i]!= '\0' ; i++)
if (str[i+1]== ' ' ||str[i+1]== '\0' )
j++;
printf ( "单词个数为%d\n" ,j);
}
|

17 有3个字符串,要求找出其中最大者。#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include "stdio.h"
#include <string.h>
void main()
{
char str1[80],str2[80],str3[80],longest[80];
gets (str1);
printf ( "\n" );
gets (str2);
printf ( "\n" );
gets (str3);
strcpy (longest,str1);
if ( strcmp (str1,str2)<0)
strcpy (longest,str2);
if ( strcmp (str2,str3)<0)
strcpy (longest,str3);
printf ( "the longest is %s" ,longest);
}
|

18 输入两个整数,要求用一个函数求出其中的大者,并在主函数中输出此值。#
方法一:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include "stdio.h"
void main()
{
int f( int a, int b);
int m,n,max;
printf ( "请输入两个数:" );
scanf ( "%d,%d" ,&m,&n);
max=f(m,n);
printf ( "max=%d" ,max);
}
int f( int a, int b)
{
int c;
c=a>b?a:b;
return (c);
}
|

方法二:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include "stdio.h"
void main()
{
int f( int a, int b);
int m,n,max;
printf ( "请输入两个数:" );
scanf ( "%d,%d" ,&m,&n);
max=f(m,n);
printf ( "max=%d" ,max);
}
int f( int a, int b)
{
int c;
if (a>b)
c=a;
else
c=b;
return (c);
}
|

19 输入两个整数,要求用一个函数求出其最大公约数和最小公倍数,并在主函数中调用该子函数。链接#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #include <stdio.h>
void main()
{
int hcf( int , int );
int lcd( int , int , int );
int u,v,h,l;
scanf ( "%d,%d" ,&u,&v);
h=hcf(u,v);
printf ( "最大公约数=%d\n" ,h);
l=lcd(u,v,h);
printf ( "最小公倍数=%d\n" ,l);
}
int hcf( int u, int v)
{
int t,r;
if (v>u)
{
t=u;
u=v;
v=t;
}
while ((r=u%v)!=0)
{
u=v;
v=r;
}
return (v);
}
int lcd( int u, int v, int h)
{
return (u*v/h);
}
|

20 输入4个整数,找出其中最大的数。用函数的嵌套调用来处理#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include <stdio.h>
void main()
{
int max_4( int a, int b, int c, int d);
int a,b,c,d,max;
printf ( "Please enter 4 interger numbers:" );
scanf ( "%d %d %d %d" ,&a,&b,&c,&d);
max=max_4(a,b,c,d);
printf ( "max=%d \n" ,max);
}
int max_4( int a, int b, int c, int d)
{
int max_2( int a, int b);
int m;
m=max_2(a,b);
m=max_2(m,c);
m=max_2(m,d);
return (m);
}
int max_2( int a, int b)
{
return (a>b?a:b);
}
|

21 求5!#
方法一【递归】:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <stdio.h>
void main()
{
long fac( int n);
long y;
y=fac(5);
printf ( "5!=%ld\n" ,y);
}
long fac( int n)
{
long f;
if (n<0)
printf ( "n<0,data error!" );
else if (n==0,n==1)
f=1;
else
f=fac(n-1)*n;
return (f);
}
|

方法二【非递归】:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include <stdio.h>
void main()
{
long fac( int n);
long y;
y=fac(5);
printf ( "5!=%ld\n" ,y);
}
long fac( int n)
{
long f=1;
int i;
if (n<0)
printf ( "n<0,data error!" );
else if (n==0,n==1)
f=1;
else
for (i=1;i<=5;i++)
{
f=i*f;
}
return (f);
}
|
22 编写一个函数,用来分别求数组score_1(有5个元素)和数组score_2(有10个元素)各元素的平均值。#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include "stdio.h"
void main()
{
float f( float score[], int n);
float score_1[5],score_2[10],aver_1,aver_2;
int i;
printf ( "score_1:\n" );
for (i=0; i<5; i++)
scanf ( "%f" ,&score_1[i]);
printf ( "score_2:\n" );
for (i=0; i<10; i++)
scanf ( "%f" ,&score_2[i]);
aver_1=f(score_1,5);
aver_2=f(score_2,10);
printf ( "aver_1=%f,aver_2=%f\n" ,aver_1,aver_2);
}
float f( float score[], int n)
{
int i;
float aver,sum=0;
for (i=0; i<n; i++)
sum=sum+score[i];
aver=sum/n;
return (aver);
}
|

23 将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1改后成为1,4,5,6,8。#
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include "stdio.h"
void main()
{
int a[6],b[6],i;
printf ( "请输入一个数组:" );
for (i=0; i<6; i++)
scanf ( "%d" ,&a[i]);
printf ( "逆序排列后的数组是:" );
for (i=0; i<6; i++)
{
b[i]=a[5-i];
printf ( "%4d " ,b[i]);
}
}
|

24 用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”,n的位数不确定,可以是任意位数的整数#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include <stdio.h>
void main()
{
void convert( int n);
int number;
printf ( "input an integer: " );
scanf ( "%d" ,&number);
printf ( "output: " );
if (number<0)
{
putchar ( '-' );
putchar ( ' ' );
number=-number;
}
convert(number);
printf ( "\n" );
}
void convert( int n)
{
int i;
if ((i=n/10)!=0)
convert(i);
putchar (n%10+ '0' );
putchar (32);
}
|

25 用指针实现输入3个整数并按从小到大的顺序输出#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #include "stdio.h"
void main()
{
void exchange( int * p1, int * p2, int * p3);
int n1,n2,n3;
int * p1,* p2,* p3;
printf ( "input three integer n1,n2,n3:" );
scanf ( "%d,%d,%d" ,&n1,&n2,&n3);
p1=&n1;
p2=&n2;
p3=&n3;
exchange(p1,p2,p3);
printf ( "Now,the order is:%d,%d,%d" ,n1,n2,n3);
}
void exchange( int * p1, int * p2, int * p3)
{
void swap( int * p1, int * p2);
if (* p1>* p2)
swap( p1, p2);
if (* p1>* p3)
swap(p1,p3);
if (* p2>* p3)
swap(p2,p3);
}
void swap( int * p1, int * p2)
{
int p;
p=* p1;
* p1=* p2;
* p2=p;
}
|

26 用指针实现输入3个整数并按从大到小的顺序输出#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include <stdio.h>
void main ( )
{
void paixu( int * p1, int * p2);
int a,b,c,* p1,* p2,* p3;
printf ( "please enter a,b,c:" );
scanf ( "%d,%d,%d" ,&a,&b,&c);
p1=&a;
p2=&b;
p3=&c;
if (a<b)
paixu(p1,p2);
if (a<c)
paixu(p1,p3);
if (b<c)
paixu(p2,p3) ;
printf ( "%5d%5d%5d\n" ,a,b,c);
}
void paixu( int * p1, int * p2)
{
int t;
t=* p1;
* p1=* p2;
* p2=t;
}
|

27 用指针实现将数组b[10]中的元素按逆序存放#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include <stdio.h>
void main()
{
void sort ( int *p, int m);
int i;
int *p,num[10];
printf ( "please input these numbers:\n" );
for (i=0; i<10; i++)
{
scanf ( "%d" ,&num[i]);
}
p=&num[0];
sort(p,10);
printf ( "Now,the sequence is:\n" );
for (i=0; i<10; i++)
{
printf ( "%d " ,num[i]);
}
printf ( "\n" );
}
void sort ( int *p, int m)
{
int i;
int temp, *p1,*p2;
for (i=0; i<m/2; i++)
{
p1=p+i;
p2=p+(m-1-i);
temp=*p1;
*p1=*p2;
*p2=temp;
}
}
|

28 用冒泡法实现对10个整数按从大到小的顺序排序输出(要求用指针实现)#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include "stdio.h"
void main()
{
void swap( int * p1, int * p2);
int a[10],* p ,i,j;
printf ( "input 10 number:\n" );
for (i=0; i<10; i++)
scanf ( "%d" ,&a[i]);
p=a;
for (i=0; i<10; i++)
for (j=i; j<9; j++)
if (a[i]<a[j+1])
swap(p+i,p+j+1);
for (i=0; i<10; i++)
printf ( "%5d " ,a[i]);
printf ( "\n" );
}
void swap( int * p1, int * p2)
{
int t;
t=* p1;
* p1=* p2;
* p2=t;
}
|

29 用选择法实现对10个整数按从小到大的顺序排序输出(要求用指针实现)。#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include "stdio.h"
void main()
{
void swap( int * p1, int * p2);
int a[10],* p ,i,j;
printf ( "input 10 number:\n" );
for (i=0; i<10; i++)
scanf ( "%d" ,&a[i]);
p=a;
for (i=0; i<10; i++)
for (j=0; j<9-i; j++)
if (a[j]>a[j+1])
swap(p+j,p+j+1);
for (i=0; i<10; i++)
printf ( "%5d " ,a[i]);
printf ( "\n" );
}
void swap( int * p1, int * p2)
{
int t;
t=* p1;
* p1=* p2;
* p2=t;
}
|

30 定义一个结构体变量(包括年、月、日)。计算当天是本年中的第几天,注意闰年问题。#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | #include <stdio.h>
struct
{
int year;
int month;
int day;
} date;
void main()
{
int days;
printf ( "input year,month,day:" );
scanf ( "%d,%d,%d" ,&date. year,&date.month,&date.day);
switch (date.month)
{
case 1:
days=date.day;
break ;
case 2:
days=date.day+31;
break ;
case 3:
days=date.day+59;
break ;
case 4:
days=date.day+90;
break ;
case 5:
days=date.day+120;
break ;
case 6:
days=date.day+151;
break ;
case 7:
days=date.day+181;
break ;
case 8:
days=date.day+212;
break ;
case 9:
days=date.day+243;
break ;
case 10:
days=date.day+273;
break ;
case 11:
days=date.day+304;
break ;
case 12:
days=date.day+334;
break ;
}
if ((date.year %4== 0 && date.year % 100 != 0
||date.year % 400 == 0) && date.month >=3) days+=1;
printf ( "%d/%d is the %dth day in %d.\n" ,date.month,date.day,days,date.year);
}
|

31. 设计候选人得票统计程序,要求有4个侯选人(分别是Zhang 、Wang 、Li、 Zhao),选民每次输入一个被选人的姓名,最后统计出各人的得票结果。#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <string.h>
#include <stdio.h>
struct person
{
char name[20];
int count;
} leader[4]= { "zhang" ,0, "wang" ,0, "li" ,0, "zhao" ,0};
void main()
{
int i,j;
char leader_name[20];
for (i=1; i<=10; i++)
{
scanf ( "%s" ,leader_name);
for (j=0; j<4; j++)
if ( strcmp (leader_name,leader[j].name)==0)
leader[j].count++;
}
printf ( "\nResoult:\n" );
for (i=0; i<4; i++)
printf ( "%5s:%d\n" ,leader[i].name,leader[i].count);
}
|

32 定义一个包括学号、姓名、年龄的学生结构体,要求实现三个学生信息的输入输出,并输出平均年龄#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include <stdio.h>
#define N 3
struct student
{
char num[6];
char name[20];
int age;
} stu[N];
void main()
{
int i,aver=0;
for (i=0; i<N; i++)
{
printf ( "input scores of student %d:\n" ,i+1);
printf ( "NO.:" );
scanf ( "%s" ,stu[i].num);
printf ( "name:" );
scanf ( "%s" ,stu[i].name);
printf ( "age :" );
scanf ( "%d" ,&stu[i].age);
}
printf ( " NO. name age\n" );
for (i=0; i<N; i++)
{
printf ( "%5s%10s%9d" ,stu[i].num,stu[i].name,stu[i].age);
printf ( "\n" );
}
for (i=0; i<N; i++)
aver=aver+stu[i].age;
aver=aver/3;
printf ( "aver=%d" ,aver);
}
|

33 定义一个包括教师编号、姓名、工资的教师结构体,要求实现三个教师信息的输入输出,并输出平均工资。#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include <stdio.h>
#define N 3
struct teacher
{
char num[6];
char name[20];
float pay;
} tea[N];
void main()
{
int i;
float aver=0;
for (i=0; i<N; i++)
{
printf ( "input scores of student %d:\n" ,i+1);
printf ( "NO.:" );
scanf ( "%s" ,tea[i].num);
printf ( "name:" );
scanf ( "%s" ,tea[i].name);
printf ( "pay :" );
scanf ( "%f" ,&tea[i].pay);
}
printf ( " NO. name pay\n" );
for (i=0; i<N; i++)
{
printf ( "%5s%10s%9.2f" ,tea[i].num,tea[i].name,tea[i].pay);
printf ( "\n" );
}
for (i=0; i<N; i++)
aver=aver+tea[i].pay;
aver=aver/N;
printf ( "aver=%f" ,aver);
}
|

34 定义一个包括职员号、姓名、工资的职员结构体,要求实现三个职员信息的输入输出,并输出平均工资
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include <stdio.h>
#define N 3
struct worker
{
char num[6];
char name[20];
float pay;
} work[N];
void main()
{
int i;
float aver=0;
for (i=0; i<N; i++)
{
printf ( "input scores of worker %d:\n" ,i+1);
printf ( "NO.:" );
scanf ( "%s" ,work[i].num);
printf ( "name:" );
scanf ( "%s" ,work[i].name);
printf ( "pay :" );
scanf ( "%f" ,&work[i].pay);
}
printf ( " NO. name pay\n" );
for (i=0; i<N; i++)
{
printf ( "%5s%10s%9.2f" ,work[i].num,work[i].name,work[i].pay);
printf ( "\n" );
}
for (i=0; i<N; i++)
aver=aver+work[i].pay;
aver=aver/N;
printf ( "aver=%f" ,aver);
}
|

35 建立动态数组,输入5个学生的成绩,另外用一个函数检查其中有无低于60分的,输出不合格的成绩。#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <stdio.h>
#include <stdlib.h>
void main()
{
void check( int *);
int *p1,i;
p1=( int *) malloc (5* sizeof ( int ));
for (i=0; i<5; i++)
scanf ( "%d" ,p1+i);
check(p1);
free (p1);
}
void check( int *p)
{
int i;
printf ( "They are fail:" );
for (i=0; i<5; i++)
if (p[i]<60)
printf ( "%d " ,p[i]);
printf ( "\n" );
}
|

36 写一函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度(要求用指针实现)。#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <stdio.h>
void main()
{
int length( char *p);
int len;
char str[20];
printf ( "input string: " );
scanf ( "%s" ,str);
len=length(str);
printf ( "The length of string is %d.\n" ,len);
}
int length( char *p)
{
int n;
n=0;
while (*p!= '\0' )
{
n++;
p++;
}
return (n);
}
|

37 有一个一维数组score,内放10个学生成绩,用一个函数求平均成绩,并将10个成绩中不及格(小于60)的成绩和该成绩在数组中的序号输出。#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include "stdio.h"
void main()
{
void fail( float score[], int n);
float score[10];
int i;
for (i=0; i<10; i++)
scanf ( "%f" ,&score[i]);
averfail(score,10);
}
void averfail( float score[], int n)
{
int i;
float averscore=0;
for (i=0; i<n; i++)
{
averscore = averscore+score[i];
if (score[i]<60)
printf ( "成绩为%f,序号为%d\n" ,score[i],i+1);
}
averscore=averscore/n;
printf ( "平均成绩:%f" ,averscore);
}
|

38. 有一个一维数组内放10个数,设计函数,求出10个数中的最大值、最小值、平均值。#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include "stdio.h"
void main()
{
int a[10],i,max,min,sum=0;
float average;
printf ( "input 10 number:\n" );
for (i=0; i<10; i++)
scanf ( "%d" ,&a[i]);
max=a[0];
for (i=0; i<10; i++)
{
sum=sum+a[i];
if (a[i]>max)
max=a[i];
}
average=sum/10.0;
min=a[0];
for (i=0; i<10; i++)
{
if (a[i]<min)
min=a[i];
}
printf ( "max=%d,average=%f,min=%d" ,max,average,min);
}
|

39. 【有问题】找出一个2维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #include "stdio.h"
int main()
{
int a[4][5];
int i,j,k,m;
for (i=0; i<4; i++)
{
for (j=0; j<5; j++)
{
scanf ( "%d" ,&a[i][j]);
}
}
for (i=0; i<4; i++)
{
for (j=0; j<5; j++)
{
for (m=0; m<4; m++)
{
if (a[i][j]<a[m][j])
{
for (k=0; k<5; k++)
{
if (a[i][j]>a[i][k])
continue ;
}
}
}
}
}
printf ( "i=%d,j=%d" ,i,j);
return 0;
}
|
40. 输入8个学生4门课的成绩,分别用函数实现如下功能:#
(1) 计算每个学生平均分;#
(2) 计算每门课的平均分;#
(3) 找出32个分数中最高分所对应的学生和课程。#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | #include <stdio.h>
#define N 8
#define M 4
float score[N][M];
float a_stu[N],a_cour[M];
int r,c;
void main()
{
int i,j;
float h;
float highest();
void input_stu( void );
void aver_stu( void );
void aver_cour( void );
input_stu();
aver_stu();
aver_cour();
printf ( "\n NO. cour1 cour2 cour3 cour4 aver\n" );
for (i=0; i<N; i++)
{
printf ( "\n NO %2d " ,i+1);
for (j=0; j<M; j++)
printf ( "%8.2f" ,score[i][j]);
printf ( "%8.2f\n" ,a_stu[i]);
}
printf ( "\naverage:" );
for (j=0; j<M; j++)
printf ( "%8.2f" ,a_cour[j]);
printf ( "\n" );
h=highest();
printf ( "highest:%7.2f NO. %2d course %2d\n" ,h,r,c);
}
void input_stu( void )
{
int i,j;
for (i=0; i<N; i++)
{
printf ( "\ninput score of student%2d:\n" ,i+1);
for (j=0; j<M; j++)
scanf ( "%f" ,&score[i][j]);
}
}
void aver_stu( void )
{
int i,j;
float s;
for (i=0; i<N; i++)
{
for (j=0,s=0; j<M; j++)
s+=score[i][j];
a_stu[i]=s/5.0;
}
}
void aver_cour( void )
{
int i,j;
float s;
for (j=0; j<M; j++)
{
s=0;
for (i=0; i<N; i++)
s+=score[i][j];
a_cour[j]=s/( float )N;
}
}
float highest()
{
float high;
int i,j;
high=score[0][0];
for (i=0; i<N; i++)
for (j=0; j<M; j++)
if (score[i][j]>high)
{
high=score[i][j];
r=i+1;
c=j+1;
}
return (high);
}
|
41 用一个函数实现将一行字符串中的最长的单词输出。此行字符串从主函数传递给该函数#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #include <stdio.h>
#include <string.h>
void main()
{
int alphabetic( char );
int longest( char []);
int i;
char line[100];
printf ( "input one line:\n" );
gets (line);
printf ( "The longest word is :" );
for (i=longest(line); alphabetic(line[i]); i++)
printf ( "%c" ,line[i]);
printf ( "\n" );
}
int alphabetic( char c)
{
if ((c>= 'a' && c<= 'z' )||(c>= 'A' &&c<= 'z' ))
return (1);
else
return (0);
}
int longest( char string[])
{
int len=0,i,length=0,flag=1,place=0,point;
for (i=0; i<= strlen (string); i++)
if (alphabetic(string[i]))
if (flag)
{
point=i;
flag=0;
}
else
len++;
else
{
flag=1;
if (len>=length)
{
length=len;
place=point;
len=0;
}
}
return (place);
}
|
42.输出金字塔图案(要求用循环实现#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include <stdio.h>
void main()
{
int i,j,k;
for (i=0; i<=3; i++)
{
for (j=0; j<=2-i; j++)
printf ( " " );
for (k=0; k<=2*i; k++)
printf ( "*" );
printf ( "\n" );
}
for (i=0; i<=2; i++)
{
for (j=0; j<=i; j++)
printf ( " " );
for (k=0; k<=4-2*i; k++)
printf ( "*" );
printf ( "\n" );
}
}
|
43 要有一个已排好序的数组,求输入一个数后,按原来排序的规律将她插入数组中#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include "stdio.h"
void main()
{
int a[10];
int b[11];
int i,m,j;
printf ( "请输入一个数组:\n" );
for (i=0; i<10; i++)
scanf ( "%d" ,&a[i]);
printf ( "请输入一个任意的整数:" );
scanf ( "%d" ,&m);
for (i=0; i<10; i++)
if (m<a[i])
break ;
for (j=0; j<11; j++)
{
if (i>j)
b[j]=a[j];
else if (i<j)
b[j]=a[j-1];
else b[j]=m;
}
printf ( "该数组的重新排序为:" );
for (j=0; j<11; j++)
printf ( "%d " ,b[j]);
}
|

44 写一个判断素数的函数,在主函数输入一个整数,输出是否素数的信息#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include "stdio.h"
#include "math.h"
void main()
{
int prime( int n);
int m;
printf ( "please input a integer:\n" );
scanf ( "%d" ,&m);
if (prime(m))
printf ( "%d is a prime" ,m);
else
printf ( "%d is not a prime" ,m);
}
int prime( int i)
{
int flag=1,n;
for (n=2; n<= sqrt (i); n++)
{
if (i%n==0)
flag=0;
}
return (flag);
}
|

45 有一篇文章,共有4行文章,每行有60个字符。要求分别统计出其中英文大写字符、小写字母、数字、空格以及其他字符的个数#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include <stdio.h>
void main()
{
int i,j,upp,low,dig,spa,oth;
char text[4][60];
upp=low=dig=spa=oth=0;
for (i=0; i<4; i++)
{
printf ( "please input line %d:\n" ,i+1);
gets (text[i]);
for (j=0; j<60 && text[i][j]!= '\0' ; j++)
{
if (text[i][j]>= 'A' && text[i][j]<= 'Z' )
upp++;
else if (text[i][j]>= 'a' && text[i][j]<= 'z' )
low++;
else if (text[i][j]>= '0' && text[i][j]<= '9' )
dig++;
else if (text[i][j]== ' ' )
spa++;
else
oth++;
}
}
printf ( "\nupper case: %d\n" ,upp);
printf ( "lower case: %d\n" ,low);
printf ( "digit : %d\n" ,dig);
printf ( "space : %d\n" ,spa);
printf ( "other : %d\n" ,oth);
}
|

46. 有一行电文,已按下面规律译成密码:#
A→Z a→z#
B→Y b→y#
C→X c→x/#
即第1个字母变成第26个字母,第i个字母变成第(26 – i + 1)个字母。非字母符号不变。要求编程序将密码译回原文,并输出密码和原文。#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include <stdio.h>
void main()
{
int j,n;
char ch[80],tran[80];
printf ( "input cipher code:" );
gets (ch);
printf ( "\ncipher code :%s" ,ch);
j=0;
while (ch[j]!= '\0' )
{
if ((ch[j]>= 'A' ) && (ch[j]<= 'Z' ))
tran[j]=155-ch[j];
else if ((ch[j]>= 'a' ) && (ch[j]<= 'z' ))
tran[j]=219-ch[j];
else
tran[j]=ch[j];
j++;
}
n=j;
printf ( "\noriginal text:" );
for (j=0; j<n; j++)
putchar (tran[j]);
printf ( "\n" );
}
|

47 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下来的是原来第几号的那位(要求用指针知识实现)。【见2015年笔试题】#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include <stdio.h>
void main()
{
int i,k,m,n,num[50],*p;
printf ( "input number of person: n=" );
scanf ( "%d" ,&n);
p=num;
for (i=0; i<n; i++)
*(p+i)=i+1;
i=0;
k=0;
m=0;
while (m<n-1)
{
if (*(p+i)!=0) k++;
if (k==3)
{
*(p+i)=0;
k=0;
m++;
}
i++;
if (i==n) i=0;
}
while (*p==0) p++;
printf ( "The last one is NO.%d\n" ,*p);
}
|

48 有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数)(用结构体)。#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | #include <stdio.h>
#define N 10
struct student
{
char num[6];
char name[8];
float score[3];
float avr;
} stu[N];
void main()
{
int i,j,maxi;
float sum,max,average;
for (i=0; i<N; i++)
{
printf ( "input scores of student %d:\n" ,i+1);
printf ( "NO.:" );
scanf ( "%s" ,stu[i].num);
printf ( "name:" );
scanf ( "%s" ,stu[i].name);
for (j=0; j<3; j++)
{
printf ( "score %d:" ,j+1);
scanf ( "%f" ,&stu[i].score[j]);
}
}
average=0;
max=0;
maxi=0;
for (i=0; i<N; i++)
{
sum=0;
for (j=0; j<3; j++)
sum+=stu[i].score[j];
stu[i].avr=sum/3.0;
average+=stu[i].avr;
if (sum>max)
{
max=sum;
maxi=i;
}
}
average/=N;
printf ( " NO. name score1 score2 score3 average\n" );
for (i=0; i<N; i++)
{
printf ( "%5s%10s" ,stu[i].num,stu[i].name);
for (j=0; j<3; j++)
printf ( "%9.2f" ,stu[i].score[j]);
printf ( " %8.2f\n" ,stu[i].avr);
}
printf ( "average=%5.2f\n" ,average);
printf ( "The highest score is : student %s,%s\n" ,stu[maxi].num,stu[maxi].name);
printf ( "his scores are:%6.2f,%6.2f,%6.2f,average:%5.2f.\n" , stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2],stu[maxi].avr);
}
|
49 写一个函数,将一个字符串中的元音字母复制到另一个字符串,然后输出#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include "stdio.h"
void main()
{
void copy( char s[3], char m[2]);
char str[80],c[80];
printf ( "input str:\n" );
gets (str);
copy(str, c);
printf ( "the vovel letters are:%s\n" ,c);
}
void copy( char s[3], char m[2])
{
int i,j;
for (i=0,j=0; s[i]!= '\0' ; i++)
if (s[i]== 'a' ||s[i]== 'A' ||s[i]== 'o' ||s[i]== 'O' ||s[i]== 'u' ||s[i]== 'U' ||s[i]== 'i' ||s[i]== 'I' ||s[i]== 'e' ||s[i]== 'E' )
{
m[j]=s[i];
j++;
}
m[j]= '\0' ;
}
|

50 编一程序,输入月份号,输出该月的英文月名。例如,输入3,则输出March,要求用指针数组处理。#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h>
void main()
{
char * month_name[13]= { "illegal month" , "January" , "February" , "March" , "April" ,
"May" , "June" , "july" , "August" , "September" , "October" , "November" , "December"
};
int n;
printf ( "input month:\n" );
scanf ( "%d" ,&n);
if ((n<=12) && (n>=1))
printf ( "It is %s.\n" ,*(month_name+n));
else
printf ( "It is wrong.\n" );
}
|


作者:Hang Shao
出处:https://www.cnblogs.com/pam-sh/p/12616965.html
版权:本作品采用「知识共享」许可协议进行许可。
声明:欢迎交流! 原文链接 ,如有问题,可邮件(mir_soh@163.com)咨询.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)