搜档网
当前位置:搜档网 › C语言上机100题

C语言上机100题

C语言上机100题
C语言上机100题

1: 第1题 m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。

答案:

int fun(int score[],int m,int below[])

{

int i,k=0,aver=0;

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

aver+=score[i];

aver/=m;

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

if(score[i]<aver)

{

below[k]=score[i];

k++;

}

return k;

}

2: 第2题请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。

答案:

void fun(int *a, int *n)

{

int i,j=0;

for(i=2;i<1000;i++)

if ((i%7==0 || i%11==0) && i%77!=0)

a[j++]=i;

*n=j;

}

3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。

答案:

void fun(int x, int pp[ ], int *n)

{

int i=1,j=0;k=0,*t=pp;

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

if(i%2!=0)

{

t[j]=I;

j++;

}

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

if(x%t[i]==0)

{

pp[k]=t[i];

k++;

}

*n=k;

}

4: 第4题请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。

答案:

void fun(char *tt, int pp[])

{

int i;

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

pp[i]=0;

while (*tt)

{

switch (*tt)

{

case ‘a’: pp[0]++;break;

case ‘b’: pp[1]++;break;

case ‘c’: pp[2]++;break;

case ‘d’: pp[3]++;b reak;

case ‘e’: pp[4]++;break;

case ‘f’: pp[5]++;break;

case ‘g’: pp[6]++;break;

case ‘h’: pp[7]++;break;

case ‘i’: pp[8]++;break;

case ‘j’: pp[9]++;break;

case ‘k’: pp[10]++;break;

case ‘l’: pp[11]++;break;

case ‘m’: pp[12]++;break;

case ‘n’: pp[12]++;bre ak;

case ‘o’: pp[14]++;break;

case ‘p’: pp[15]++;break;

case ‘q’: pp[16]++;break;

case ‘r’: pp[17]++;break;

case ‘s’: pp[18]++;break;

case ‘t’: pp[19]++;break;

case ‘u’: pp[20]++;break;

case ‘v’: pp[21]++;break;

case ‘w’: pp[22]++;break;

case ‘x’: pp[23]++;break;

case ‘y’: pp[24]++;break;

case ‘z’: pp[25]++;break;

}

tt++;

}

}

5: 第5题请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k各素数存入xx所指的数组中。

答案:

void fun(int m, int k, int xx[])

{

int g=0,I,j,flag=1;

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

{

for(j=0;j<I;j++)

{

if(i%j!=0)

flag=1;

else

{

flag=0;

break;

}

}

if (flag==1 && j>=i)

{

if (k>=0)

{

xx[g++]=i;

k--;

}

else

break;

}

}

}

6: 第6题请编写一个函数void fun(char a[],char[],int n),其功能是:删除以各字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。

答案:

void fun(char a[],char b[], int n)

{

int I,j=0;

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

if (i!=n)

{

b[j]=a[i];

j++;

}

b[j]=‘\0’;

}

7: 第7题请编写一个函数int fun(int *s,int t,int *k),用来求除数组的最大元素在数组中的下标并存放在k所指的储存单元中。

答案:

void fun (int *s, int t, int *k)

{

int I, max;

max=s[0];

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

if (s[i]>max)

{

max=s[i];

*k=I;

}

}

8: 第8题编写函数fun,功能是:根据以下攻势计算s,计算结果作为函数值返回;n通过形参传入。S=1+1/(1+2)+1/(1+2+3)+…….+1/(1+2+3+4+……+n)

答案:

float fun (int n)

{

int i;

float s=1.0, t=1.0;

for(i=2;i<=n;i++)

{

t=t+i;

s=s+1/t;

}

return s;

}

9: 第9题编写一个函数fun,它的功能是:根据以下公式求p的值,结果由函数值带回。M与n为两个正整数,且要求m>n。 p=m!/n!(m-n)!

答案:

float fun(int m, int n)

{

float p,t=1.0;

int I;

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

t=t*I;

p=t;

for(t=1.0,i=1;i<=n;i++)

t=t*I;

p=p/t;

for(t=1.0,i=1;i<=m-n;i++)

t=t*I;

p=p/t;

return p;

}

10: 第10题编写函数fun,它的功能是:利用以下的简单迭代方法求方程

cos(x)-x=0的一个实根。

迭代步骤如下:(1)取x1初值为0.0; (2)x0=x1,把x1的值赋各x0;

(3)x1=cos(x0),求出一个新的x1;

(4)若x0-x1的绝对值小于0.000001,则执行步骤(5),否则执行步骤(2);

(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。

程序将输出root=0.739085。

答案:

float fun()

{

float x1=0.0,x0;

do

{

x0=x1;

x1=cos(x0);

}

while(fabs(x0-x1)>1e-6);

return x1;

}

11: 第11题下列程序定义了n×n的二维数组,并在主函数中自动赋值。请编写函数 fun(int a[][n]),该函数的功能是:使数组左下半三角元素中的值全部置成0。

答案:

int fun(int a[][N])

{

int I,j;

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

for(j=0;j<=I;j++)

a[i][j]=0;

}

12: 第12题下列程序定义了n×n的二维数组,并在主函数中赋值。请编写函数fun,函数的功能使求出数组周边元素的平均值并作为函数值返回给主函数中的s。

答案:

double fun(int w[][N])

{

int I,j,k=0;

double s=0.0;

for(j=0;j<N;j++)

s+=w[0][j];

k++;

}

for(j=0;j<N;j++)

{

s+=w[N-1][j];

k++;

}

for(i=1;i<=N-2;i++)

{

s+=w[i][0];

k++;

}

for(i=1;i<=N-2;i++)

{

s+=w[i][N-1];

k++;

}

return s/=k;

}

13: 第13题请编写一个函数void fun(int tt[m][n],int pp[n]),tt指向一个m行n列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中。二维数组中的数已在主函数中赋予。

答案:

void fun(int tt[M][N], int pp[N])

{

int I,j,min;

for(j=0;j<N;j++)

{

min=tt[0][j];

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

{

if (tt[i][j]<min)

min=tt[i][j];

}

pp[j]=min;

}

}

14: 第14题请别写函数fun,函数的功能使求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。

答案:

int fun(int a[M][N])

{

int I,j,s=0;

for(j=0;j<N;j++)

{

s+=a[0][j];

s+=a[M-1][j];

}

for(i=1;i<=M-2;i++)

{

s+=a[i][0];

s+=a[i][N-1];

}

return s;

}

15: 第15题请编写一个函数unsigned fun(unsigned w),w使一个大于10的无符号整数,若w使n(n≥2)位的整数,则函数求出w后n-1位的数作为函数值返回。

答案:

unsigned fun(unsigned w)

{

unsigned t,s=0,s1=1,p=0;

t=w;

while(t>10)

{

if(t/10)

p=t%10;

s=s+p*s1;

s1=s1*10;

t=t/10;

}

return s;

}

16: 第16题请编写一个函数float fun(double h),函数的功能使对变量h中的值保留2位小树,并对第三位进行四舍五入(规定h中的值位正数)。

答案:

float fun(float h)

{

long t;

float s;

h=h*1000;

t=(h+5)/10;

s=(float)t/100.0;

return s;

}

17: 第17题请编写一个函数fun(char *s),该函数的功能使把字符串中的内容拟置。

答案:

void fun(char *s)

{

char ch;

int I,m,n;

i=0;

m=n=strlen(s)-1;

while(i<(n+1)/2)

{

ch=s[i];

s[i]=s[m];

s[m]=ch;

i++;

m--;

}

}

18: 第18题编写程序,实现矩阵(3行3列)的转置(即行列互换)。

答案:

void fun(int array[3][3])

{

int I,j,temp;

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

for(j=0;j<I,j++)

{

temp=array[i][j];

array[i][j]=array[j][i];

array[j][i]=temp;

}

}

19: 第19题编写函数fun,该函数的功能是:从字符中删除指定的字符,同一字母的大、小写按不同字符处理。

答案:

void fun(char s[],int c)

{

int i=0;

char *p;

p=s;

while(*p)

{

if(*p!=c)

{

s[i]=*p;

i++;

}

p++;

}

s[i]=‘\0’;

}

20: 第20题编写函数int fun(int lim,int aa[max]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求的素数的个数。答案:

int fun(int lim, int aa[MAX])

{

int k=0,I,j;

for(i=lim;i>1;i--)

{

for(j=2;j<i;j++)

if(i%j==0)

break;

else

continue;

if(j>=i)

{

aa[k]=i;

k++;

}

}

return k++;

}

21: 第21题请编写函数fun,对长度位7个字符的字符串,除首尾字符外,将其余5个字符按ascii码降序排列。

答案:

void fun(char *s,int num)

{

char t;

int I,j;

for(i=1;i<num-2;i++)

for(j=i+1;j<num-1;j++)

if(s[i]<s[j])

{

t=s[i];

s[i]=s[j];

s[j]=t;

}

}

22: 第22题 n名学生的成绩已在主函数中放入一个带头节点的链表结构中,h 指向链表的头节点。请编写函数fun,它的功能是:找出学生的最高分,由函数值返回。

答案:

double fun(STREC *h)

{

double max;

STREC *q=h;

max=h->s;

do

{

if(q->s>max)

max=q->s;

q=q->next;

}

while(q!=0);

return max;

}

23: 第23题请编写函数fun,该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出yes,否则返回0,主函数中输出no。回文是指顺读和倒读都是一样的字符串。

答案:

int fun(char *str)

{

int I,n=0;fg=1;

char *p=str;

while (*p)

{

n++;

p++;

}

for(i=0;i<n/2;i++)

if (str[i]==str[n-1-i]);

else

{

fg=0;

break;

}

return fg;

}

24: 第24题请编写一个函数fun,它的功能是:将一个字符串转换为一个整数(不得调用c语言提供的将字符串转换为整数的函数)。

答案:

long fun (char *p)

{

long s=0,t;

int i=0,j,n=strlen(p),k,s1;

if(p[0]==‘-’)

i++;

for(j=I;j<=n-1;j++)

{

t=p[j]-‘0’;

s1=10;

for(k=j;k<n-1;k++)

t*=s1;

s+=t;

}

if(p[0]==‘-’)

return –s;

else

return s;

}

25: 第25题请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用c语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。

答案:

char *fun(char *s,char *t)

{

char *p,*t1=t,*s1=s;

int n=0;m=0;

while (*s1)

{

n++;

s1++;

}

while(*t1)

{

m++;

t1++;

}

if(n>=m)

p=s;

else

p=t;

return p;

}

26: 第26题请编写一个函数fun,它的功能是:根据以下公式求x的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):

x/2=1+1/3+1×2/3×5+1×2×3/3×5×7+1×2×3×4/3×5×7×9+…+1×2×3×…×n/3×5×7×(2n+1)

程序运行后,如果输入精度0.0005,则程序输出为3.14…。

答案:

double fun(double eps)

{

double s;

float n,t,pi;

t=1;pi=0;n=1.0;s=1.0;

while((fabs(s))>=eps)

{

pi+=s;

t=n/(2*n+1);

s*=t;

n++;

}

pi=pi*2;

return pi;

}

27: 第27题请编写一个函数fun,它的功能是:求除1到m之内(含m)能北7或11整除的所有整数放在数组a中,通过n返回这些数的个数。

答案:

void fun(int m, int *a, int *n)

{

int I,j=0; *n=0;

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

if (i%7==0 || i%11 ==0)

{

a[j]=I;

j++;

}

*n=j;

}

28: 第28题请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n 是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。

答案:

void fun (int a[],int n, int *max, int *d)

{

int I;

*max=a[0];

*d=0;

for(i=0;I<n;i++)

if(a[i]>*max)

{

*max=a[i];

*d=I;

}

}

29: 第29题请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。

答案:

void fun(char *ss)

{

int I,n;

n=strlen(ss);

for(i=1;i<n;i+=2)

if(ss[i]>=‘a’&& ss[i]<=‘z’)

ss[i]=ss[i]-32;

}

30: 第30题请编写一个函数fun,它的功能是:求除一个2×m整型二维数组中最大元素的值,并将此值返回调用函数。

答案:

int fun(int a[][M])

{

int I,j,max;

max=a[0][0];

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

for(j=0;j<M;j++)

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

max=a[i][j];

return max;

}

31: 第31题请编写函数fun,其功能是:将s所指字符串中除了下标为偶数、同时ascii值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的一个数组中。

答案:

void fun(char *s,char t[])

{

int I,j=0,n;

n=strlen(s);

for(i=0;I,n;i++)

if(i%2==0&&s[i]%2==0)

{

t[j]=s[i];

j++;

}

t[j]=‘\0’;

}

32: 第32题请编写函数fun,其功能是:将s所指字符串中除了下标为奇数、同时ascii值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的一个数组中。

答案:

void fun(char *s,char t[])

{

int I,j=0,n;

n=strlen(s);

for(i=0;I,n;i++)

if(i%2!=0&&s[i]%2!=0)

{

t[j]=s[i];

j++;

}

t[j]=‘\0’;

}

33: 第33题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串中尾部的*号不得多于n个;若多于n个,则删除多于的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。

答案:

void fun(char *a,int n)

{

int i=0;k=0;

char *p, *t;

p=t=a;

while (*t)

t++;

t--;

while(*t==‘*’)

{

k++;

t--;

}

t++;

if(k>n)

{

while (*p&&p<t+n)

{

a[i]=*p;

i++;

p++;

}

a[i]=‘\0’;

}

}

34: 第34题学生的记录由学号和成绩组成,n名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能使:把分数最高的学生数据放在h 所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。

答案:

int fun (STREC *a, STREC *b)

{

int I,j=0,n=0, max;

max=a[0].s;

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

if(a[i].s>max)

max=a[i].s;

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

if(a[i].s==max)

{

*(b+j)=a[i];

j++;

n++;

}

return n;

}

35: 第35题请编写一个函数,用来删除字符串中的所有空格。

答案:

void fun(char *str)

{

int i=0;

char *p=str;

while (*p)

{

if(*p!=‘’)

{

str[i]=*p;

i++;

}

p++;

}

str[i]=‘\0’;

}

36: 第36题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。

答案:

void fun(char *a)

{

int i=0,n=0;

char *p;

p=a;

while (*p==‘*’)

{

n++;

p++;

}

while (*p)

{

a[i]=*p;

i++;

p++;

}

while(n!=0)

{

a[i]=‘*’;

i++;

n--;

}

a[i]=‘\0’;

}

37: 第37题某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。请自己定义正确的形参。

答案:

void fun(STREC *p)

{

double av=0.0;

int i:

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

av+=p->s[i];

av/=N;

p->ave=av;

}

38: 第38题请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。

答案:

int fun(char *ss, char c)

{

while (*ss)

{

if(*ss==c)

n++;

ss++;

}

return n;

}

39: 第39题请编写函数fun,该函数的功能是:移动一维数组中的内容,若数组中由n个整数,要求把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后。

答案:

void fun(int *w, int p, int n)

{

int b[N], i, j=0;

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

{

b[i]=w[i];

j++;

}

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

{

w[j]=b[i];

j++;

}

}

40: 第40题请编写函数fun,该函数的功能是移动字符串中内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。

答案:

void fun(char *w,int m)

{

char b[N];

int I,j=0;

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

{

C语言上机练习题

上机练习题 完成 1.输入一个不超过五位的正整数,输出其逆数。例如输入12345,输出应为54321。 完成 2.计算1+2+3…+n的值,n是从键盘输入的自然数。 完成 3.从终端(键盘)读入20个数据到数组中,统计其中正数的个数,并计算这些正数之和。完成 4.从终端(键盘)将5个整数输入到数组a中,然后将a逆序复制到数组b中,并输出b中 各元素的值。 完成 5.要将五张100元的大钞票,换成等值的50元,20元,10元,5元一张的小钞票,每种面 值至少1张,编程输出所有可能的换法,程序应适当考虑减少重复次数。 完成 6.求n以内(不包括n)同时能被3和7整除的所有自然数之和的平方根s,n从键盘输入。 例如若n为1000时,函数值应为:s=153.909064。 完成 7.一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下 车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索找出车号。 完成 8.输入1~10之间的一个数字,输出它对应的英文单词。 完成 9.个位数为6且能被3整除但不能被5整除的三位自然数共有多少个,分别是哪些? 完成 10.用自然语言描述程序逻辑如下,试写程序。 ①设置环境; ②定义变量i、j、s,以及用于放置结果的变量sum,并令sum初值为0; ③i=1; ④如果i≤100,则转⑤,否则转⑧; ⑤令s=0,求前i个自然数之和,并放于变量s之中; ⑥sum=sum+s; ⑦i增加1,转④; ⑧输出和sum,结束。 完成 11.用自然语言描述的程序逻辑为: ①设置环境; ②定义变量i、flag和password,并令flag=0,i=0; ③用户回答口令,将其赋于password变量; ④口令正确?如果是,则flag=1,转⑥。否则转⑤; ⑤回答三次口令了吗?如果没有,计数器加1后(i++),转③,否则转⑥; ⑥根据flag之值输出相应信息。 12.用自然语言描述的程序逻辑如下: ①设置环境;

C语言上机练习题

上机练习题 1.输入一个不超过五位的正整数,输出其逆数。例如输入12345,输出应为54321。 2.计算1+2+3…+n的值,n是从键盘输入的自然数。 3.从终端(键盘)读入20个数据到数组中,统计其中正数的个数,并计算这些正数之和。 4.从终端(键盘)将5个整数输入到数组a中,然后将a逆序复制到数组b中,并输出b中 各元素的值。 5.要将五张100元的大钞票,换成等值的50元,20元,10元,5元一张的小钞票,每种面 值至少1张,编程输出所有可能的换法,程序应适当考虑减少重复次数。 6.求n以内(不包括n)同时能被3和7整除的所有自然数之和的平方根s,n从键盘输入。 例如若n为1000时,函数值应为:s=153.909064。 7.一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下 车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索找出车号。 8.输入1~10之间的一个数字,输出它对应的英文单词。 9.个位数为6且能被3整除但不能被5整除的三位自然数共有多少个,分别是哪些? 10.用自然语言描述程序逻辑如下,试写程序。 ①设置环境; ②定义变量i、j、s,以及用于放置结果的变量sum,并令sum初值为0; ③i=1; ④如果i≤100,则转⑤,否则转⑧; ⑤令s=0,求前i个自然数之和,并放于变量s之中; ⑥sum=sum+s; ⑦i增加1,转④; ⑧输出和sum,结束。 11.用自然语言描述的程序逻辑为: ①设置环境; ②定义变量i、flag和password,并令flag=0,i=0; ③用户回答口令,将其赋于password变量; ④口令正确?如果是,则flag=1,转⑥。否则转⑤; ⑤回答三次口令了吗?如果没有,计数器加1后(i++),转③,否则转⑥; ⑥根据flag之值输出相应信息。 12.用自然语言描述的程序逻辑如下: ①设置环境; ②定义变量digit、x、y分别表示原始数、原始数的个位数和逆数; ③输入原始正整数x; ④从x中分解出个位数字digit; ⑤合并个位digit至逆数y中; ⑥原始数x缩小10倍:x=x/10; ⑦如果x非零,则转④; ⑧输出逆数y,结束 13.输入某三角形的三个边的长度,判断出这是个什么三角形(等腰、等边、任意,或不能构 成)。 14.输入10个数,分别统计其中正数、负数、零的个数。 15.先随机产生N个三位自然数输出,然后再输出其中同时是3、5、7倍数的数。(设N为100)

计算机c语言简单的练习题及答案

1.从矩形的长,宽,输出面积(长为6.5,宽为4.5) #include main() { float length,width,area; scanf("%f%f",&length,&width); area=length*width; printf("area=%f\n",area); } 2.定义符号常量,从键盘输入圆的半径 3.5,求圆的周长和面积#define PI 3.14 #include main() { float r,c,area; scanf("%f",&r); c=2*PI*r; area=PI*r*r; printf("c=%f,area=%f\n",c,area); } 3.练习上机手册P10 3,4,5题,看看输出结果,并思考为什么 4.从键盘输入一个整数,输出其绝对值(采用两个if语句实现)#include main()

{ int i; scanf("%d",&i); if(i>=0) printf("i=%d\n",i); if(i<0) printf("i=%d\n",-i); } 5.从键盘输入一个整数,输出其绝对值(采用if——else语句实现) #include main() { int i; scanf("%d",&i); if(i>=0) printf("i=%d\n",i); else printf("i=%d\n",-i); } 6.从键盘输入年份,判断是不是闰年,如果是,输出是闰年(上机考试重点) #include main() {

C语言上机练习题

C语言上机练习题 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】

1.阅读以下程序,说出其功能和运算结果。 #include<> intmain() { intn; intfactorial(intn); scanf("%d",&n); printf("%d\n",factorial(n)); return0; } intfactorial(intn) { inti,fact=1; for(i=1;i<=n;i++) fact=fact*i; returnfact; } 若输入5↙ 2.改正下列程序中的错误,在屏幕上显示“WelcometoYou!”。 #include<> intmian() { printf("WelcometoYou!\n") return0; } 3.若输入4,程序运行结果为【1】,若输入-4,运行结果为【2】,若输入10,运行结果为【3】。 #include<> main() { intx,y; scanf("%d",&x); if(x<1) {y=x;

printf("x=%d,y=x=%d\n",x,y); } elseif(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); } } 4.当输入19,2,21时下列程序运行的结果是()。 #include<> main() {inta,b,c,max; printf("pleasescanthreenumbera,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if(max

C语言上机练习题_828701982

C语言上机考试练习题(1) 说明:我们已经学习完成了基本数据类型、基本控制语句,以及数组、函数这些知识了,请同学们看看附件中的这些题目是否能够快速编写出来?可能有个别题目与过去的练习有些重复,请尽量不要去参考过去的答案。如果现在编写起来困难还很多,那你就要加倍努力了。 1、编写一个程序,判定一个字符串是否是另一个字符串的子串,若是,返回子串在主串中的位置。要求: (1)在主函数中输入两个字符串,调用子函数cmpsubstr()判断,并在主函数输出结果。 (2)子函数的返回值为-1表示未找到,否则返回子串的位置(起始下标)。#include #include void main() { int cmpsubstr(char *s1,char *s2); char str1[20],str2[50]; char *s1=str1,*s2=str2; gets(str1); gets(str2); printf("%d",cmpsubstr(s1,s2)); } int cmpsubstr(char *s1,char *s2) { int i,d,a=0,situation=0; d=strlen(s1); for(i=0;*(s2+i)!='\0';i++) {

if(*(s1+a)==*(s2+i)) { a++; if(a==d) { situation=1; break; } } else { a=0; } } if(situation==0)return(-1); else return(i-d+2); } 2、输入一个字符串,有数字和非数字字符,如:a123x456 17960?302tab5876,将其中连续的数字作为一个整数,依次存放到数组a中。例如,123放在a[0]中,456放在a[1]中等等,统计共有多少个整数,并输出这些整数。要求:(1)在主函数中输入字符串,并输出结果。调用子程序处理字符串。 (2)子函数的返回值为整数的个数。 #include #include void main() { int search(char *str,int *sum); char str[100]; int d,sum[20],i;

C语言习题

练习题 2015-2016(2)重修) 判断 1. C 语言源程序文件通过了编译、连接之后 , 生成一个后缀为 .BAK 的文件。( ) 2.在 C 程序中, APH 和 aph 代表不同的变量。( ) 3.C语言中数据类型只有整型、实型和字符型。( ) 4.int i=20;switch(i/10){case 2:printf("A");case 1:printf("B");}的输出结果为A。() 5.Break语句用在循环体中,可结束本层循环,continue语句用在循环体中,可结束本次循环。() 6.函数strlen("ASDFG\n")的值是7。() 7.结构体类型只有一种。() 8.构成数组的各个元素可以有不同的数据类型。( ) 9.C语言中字符串的结束符是'\0'。( ) 10.数组名代表数组的首地址。( ) 11.函数的递归调用不过是一个函数直接或间接地调用它自身。() 12.通过return语句,函数可以带回一个或一个以上的返回值。() 13.Char *p="girl";的含义是定义字符型指针变量p,p的值是字符串"girl"。() 14.若有定义:char *p(char a[10]);则p是函数名。() 15.用fopen("file","r+");打开的文件"file"可以进行修改。() C概述,数据类型,运算符,表达式,选择结构 1.以下叙述中正确的是()。 A.程序设计的任务就是编写程序代码并上机调试 B.程序设计的任务就是确定所用数据结构 C.程序设计的任务就是确定所用算法 D.以上三种说法都不完整 2. C语言源程序的基本单位是()。 A.过程 B.函数 C.子程序 D.标识符 3. C语言规定,在一个源程序中main函数的位置()。 A.必须在最开始 B.必须在最后 C.必须在预处理命令的后面 D.可以在其他函数之前或之后 4.以下叙述中正确的是()。 A.C语言系统以函数为单位编译源程序 B.main函数必须放在程序开始 C.用户定义的函数可以被一个或多个函数调用任意多次 D.在一个函数体内可以定义另外一个函数 5. C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符() A.必须为字母 B.必须为下划线 C.必须为字母或下划线 D.可以是字母,数字和下划线中任一种字符 6.下面四个选项中,均是合法转义字符的选项是() A.'\'' '\\' '\n' B.'\' '\017' '\"' C.'\018' '\f' 'xab' D.'\\0' '\101' 'xlf' 7.下面四个选项中,均是不合法的用户标识符的选项是() A.A P_0 do B.float la0 _A C.b-a goto int D._123 temp INT 8.已知有声明 char c='1';int x=300;float t=35000;double d=3.1234567e10; ,则以下表达式求值 时除( )外其结果都可能是不准确的。 A.x=t/c B.t=d/x C.t=d/le5f D.t=x+c 9.已知有声明"int n;float x,y;",则执行语句"y=n=x=3.89;"后,y的值为()。 A.3 B.3.0 C.3.89 D.4.0 10.已知有声明"int a=3,b=4,c=5;",以下表达式中值为0的是()。

c语言经典程序100题

【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 2.程序源代码: main() { int i,j,k; printf("\n"); for(i=1;i<5;i++) /*以下为三重循环*/ for(j=1;j<5;j++) for (k=1;k<5;k++) { if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ printf("%d,%d,%d\n",i,j,k); } } 【程序2】 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提 成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于 40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 2.程序源代码: # include main() { double i; double bonus1,bonus2,bonus4,bonus6,bonus10,bonus; scanf("%lf",&i); bonus1=100000*0.1; bonus2=bonus1+100000*0.075; bonus4=bonus2+200000*0.05; bonus6=bonus4+200000*0.03; bonus10=bonus6+400000*0.015;

C语言上机练习题及复习资料

1输入三个整数x,y,z,把这三个数由小到大输出。 # include void main() { int x,y,z,a; scanf ("%d,%d,%d",&x,&y,&z); if(x>y) {a=x; x=y;y=a; } if(x>z) { a=x; x=z; z=a; } if(y>z) {a=y; y=z; z=a; } printf("%d,%d,%d\n",x,y,z); } 2输入圆的半径,输出圆的周长和面积。 # include # define PI 3.1415926 # define S ==PI*r*r # define V (4.0/3)*PI*r*r*r void main() { double r; printf("please input r:"); scanf("%lf",&r); printf("area is %.4lf\n",S); printf("volume is %.4lf\n",V); } 输入正方形的边长,输出正方形的周长和面积。 # include void main() { float c,zc,mj; printf("输入你的正方形"); scanf("%f\n",&c); zc=4*c; mj=c*c; printf("周长%f,面积%f,边长%f",zc,mj,c); } 3用格式输入函数输入3个字符,并用输出函数反向输出3个字符和他们的ASCII 码。 # include int main() {char-ch1,ch2,ch3;

计算机二级C语言上机南开100题

计算机二级C语言上机南开100题 1: 第1题 m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。 答案: int fun(int score[],int m,int below[]) { int i,k=0,aver=0; for(i=0;i<m;i++) aver+=score[i]; aver/=m; for(i=0;i<m;i++) if(score[i]<aver) { below[k]=score[i]; k++; } return k; } 2: 第2题请编写函数fun,它的功能是:求出1到100之能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n 返回这些数的个数。 答案: void fun(int *a, int *n) { int i,j=0; for(i=2;i<1000;i++) if ((i%7==0 || i%11==0) && i%77!=0) a[j++]=i; *n=j; } 3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。 答案: void fun(int x, int pp[ ], int *n) { int i=1,j=0;k=0,*t=pp;

for(i=0;i<=x;i++) if(i%2!=0) { t[j]=I; j++; } for(i=0;i<j;i++) if(x%t[i]==0) { pp[k]=t[i]; k++; } *n=k; } 4: 第4题请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。 答案: void fun(char *tt, int pp[]) { int i; for (i=0;i<26;i++) pp[i]=0; while (*tt) { switch (*tt) { case ‘a’: pp[0]++;break; case ‘b’: pp[1]++;break; case ‘c’: pp[2]++;break; case ‘d’: pp[3]++;break; case ‘e’: pp[4]++;break; case ‘f’: pp[5]++;break; case ‘g’: pp[6]++;break; case ‘h’: pp[7]++;break; case ‘i’: pp[8]++;break; case ‘j’: pp[9]++;break; case ‘k’: pp[10]++;break; case ‘l’: pp[11]++;break; case ‘m’: pp[12]++;break; case ‘n’: pp[12]++;break; case ‘o’: pp[14]++;break; case ‘p’: pp[15]++;break;

全国计算机三级网络技术C语言南开上机南开100题(WORD版)

*******************************************************************************☆题目1 请编写一个函数jsValue(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k 个素数存入数组xx传回。 最后调用函数writeDat()读取10组数据,分别得出结果且把结果输出到文件out.dat中。 部分源程序存在文件prog1.c中。 例如:若输入17 5 则应输出:19,23,29,31,37。 请勿改动主函数main()和写函数writeDat()的内容。 int isP(int m) { int i; for(i=2;i0;m++) if(isP(m)) { xx[s++]=m; k--;} } ☆题目2 已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a 中,请考生编制一函数jsVal(),其功能是:如果四位数各位上的数字均是0或2或4或6或8,则统计出满足此条件的个数cnt,并把这些四位数按从大到小的顺序存入数组b中。最后main( )函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。 void jsVal() { int i,j,qw,bw,sw,gw; for(i=0;i

全国计算机等级考试三级C语言上机100题答案

全国计算机等级考试三级C语言上机100题 一.排序类: 1.已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:如果四位数各位上的数字均是0或2或4或6或8,则统计出满足此条件的个数cnt,并把这些四位数按从大到小的顺序存入数组b中。最后main( )函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。 注意:部分源程序存在文件prog1.c中。 程序中已定义数组:a[200],b[200],已定义变量:cnt 请勿改动数据文件IN.DA T中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。 #include #define MAX 200 int a[MAX], b[MAX], cnt = 0 ; void jsVal() { int i,j,t; for(i=0;i

全国计算机等级考试二级C语言100题

1: 第1题 m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。 答案: int fun(int score[],int m,int below[]) { int i,k=0,aver=0; for(i=0;i<m;i++) aver+=score[i]; aver/=m; for(i=0;i<m;i++) if(score[i]<aver) { below[k]=score[i]; k++; } return k; } 2: 第2题请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。 答案: void fun(int *a, int *n) { int i,j=0; for(i=2;i<1000;i++) if ((i%7==0 || i%11==0) && i%77!=0) a[j++]=i; *n=j; } 3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。 答案: void fun(int x, int pp[ ], int *n) { int i=1,j=0;k=0,*t=pp;

for(i=0;i<=x;i++) if(i%2!=0) { t[j]=I; j++; } for(i=0;i<j;i++) if(x%t[i]==0) { pp[k]=t[i]; k++; } *n=k; }

2级c语言上机-南开一百题

计算机二级C语言上机南开100题--1 1: 第1题 m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。 答案: int fun(int score[],int m,int below[]) { int i,k=0,aver=0; for(i=0;i<m;i++) aver+=score[i]; aver/=m; for(i=0;i<m;i++) if(score[i]<aver) { below[k]=score[i]; k++; }

return k; } 2: 第2题请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。 答案: void fun(int *a, int *n) { int i,j=0; for(i=2;i<1000;i++) if ((i%7==0 || i%11==0) && i%77!=0) a[j++]=i; *n=j; } 3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。 答案:

void fun(int x, int pp[ ], int *n) { int i=1,j=0;k=0,*t=pp; for(i=0;i<=x;i++) if(i%2!=0) { t[j]=I; j++; } for(i=0;i<j;i++) if(x%t[i]==0) { pp[k]=t[i]; k++; } *n=k; } 4: 第4题请编写一个函数void fun(char *tt,int pp[]),统计在

c语言上机课程大全

2013.10.10编程1.小写字母变大写字母 #include void main() { char i; scanf("%c",&i); i=i-32; printf("%c\n",i); } 2.输入两个数,原样输出 #include void main() { int i,j; scanf("%d,%d",&i,&j); printf("%d,%d\n",i,j); } 3.输入实型数据,原样输出 #include void main() {

double f; scanf("%lf",&f); printf("%lf\n",f); } 4.输入三个类型数据,原样输出 #include void main() { int i; char j; double k; scanf ("%d,%c,%lf",&i,&j,&k); printf("%d,%c,%lf\n",i,j,k); } 5.输入三个三个数字字符,输出整数#include void main() { char i,j,k; int m; scanf ("%c,%c,%c",&i,&j,&k); m=100*(i-'0')+10*(j-'0')+(k-'0');

printf("%d\n",m); } 6.判断闰年 #include void main() { int m; scanf ("%d",&m); if ((m%4==0&&m%100!=0)||(m%400==0)) printf("Yes\n"); else printf("No\n"); } 2013.10.31编程 1.钱换桃 #include void main() { int m,sum,hu;

C语言上机练习题

一、数据类型、运算符与表达式 1.整数数据的溢出,要求从键盘输入一个整数(如32768),看结果。 2.从键盘输入一个大写字母,要求小写输出,使用scanf函数和getchar函数完成。3.有一个直角三角形,键盘输入长,高,计算三角形的面积。 二、顺序程序设计 1.输入一个华氏温度,要求输出摄氏温度,公式c=5/9(F-32),输出要有文字说明。2.求ax2+bx+c=0方程的根。a,b,c由键盘输入,设b2-4ac>0。输出方程的根,取小数点后两位。 3.要将“China ”译成密码,密码规律是:用原来的字母后面第四个字母代替原来的字母。例如,”A”后面第四个字母“E“,用”E”代替”A”。“China”应译成“Glmre”。 编一程序,设五变量的初值为’C’,’h’,’i’,’n’,’a’。使其变为’G’,’l’,’m’,’r’, ‘e’,并输出,要求使用putchar和printf函数。 三、选择结构程序设计 1. 输入三个整数,并按大小顺序输出. 2. 从键盘输入一行字符,分别统计出其中英文字母数字和其他字符的个数. 3.统计一个班的成绩,要求输出成绩等级’A’,’B’,’C’,’D’,’E’.90分以上为’A’,80~89分为’B’, 70~79分为’C’,60~69分为’D’,60分以下为’E’.并计算出优秀率和合格率,用if语句和case语句完成. 四、循环控制 1.把100~200之间所有能被三整除的数输出. 2.有一个分数序列2/1,3/2,5/3,8/5,13/8,…………求出这个数列的前20项之和. 3.输入两个字符串,当遇到’.’时结束,比较两个字符串的长度,输出较长的字符串,若相 同则输出第一个字符串. 五、数组 1.在键盘上输入N个整数,试编制程序使该数组中的数按照从大到小的次序排列。 2.青年歌手参加歌曲大奖赛,有10个评委对她的进行打分,试编程求这位选手的平 均得分(去掉一个最高分和一个最低分)。 3.有一个3×4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。 4.打印以下图案 ***** ***** ***** ***** *****

2019-2020年全国计算机等级考试三级C语言上机100题答案.doc

全国计算机等级考试 三级C语言上机100题一.排序类: 1.已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:如果四位数各位上的数字均是0或2或4或6或8,则统计出满足此条件的个数cnt,并把这些四位数按从大到小的顺序存入数组b中。最后main( )函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。 注意:部分源程序存在文件prog1.c中。 程序中已定义数组:a[200],b[200],已定义变量:cnt 请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。 #include #define MAX 200 int a[MAX], b[MAX], cnt = 0 ; void jsVal() { int i,j,t; for(i=0;i

C语言编程实例100题经典版

C语言程序实例100个(一) 【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。 2.程序源代码: main() { int i,j,k; printf("\n"); for(i=1;i<5;i++) /*以下为三重循环*/ for(j=1;j<5;j++) for (k=1;k<5;k++) { if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ printf("%d,%d,%d\n",i,j,k); } } ============================================================== 【程序2】 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 2.程序源代码: main() { long int i; int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; scanf("%ld",&i); bonus1=100000*0.1; bonus2=bonus1+100000*0.75; bonus4=bonus2+200000*0.5; bonus6=bonus4+200000*0.3; bonus10=bonus6+400000*0.15; if(i<=100000) bonus=i*0.1; else if(i<=200000) bonus=bonus1+(i-100000)*0.075; else if(i<=400000)

相关主题