几道初学者的c语言题目

Python026

几道初学者的c语言题目,第1张

(1)

#include "stdio.h"

void change(int numsSource[][20], int numsDest[][20]){

char i,j,k

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

for(j=0j<20j++)

numsDest[j][i]=numsSource[i][j]

}

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

int a[20][20],b[20][20],n,i,j

printf("Input n(int 0<n<21)...\n")

if(scanf("%d",&n)!=1 || n<1 || n>20){

printf("Input error, exit...\n")

return 0

}

for(i=0i<ni++){

for(j=0j<nj++){

scanf("%d",a[i]+j)

printf("%6d",a[i][j])

}

printf("\n")

}

change(a,b)

printf("\nAfter the transpose:\n")

for(i=0i<ni++){

for(j=0j<nprintf("%6d",b[i][j++]))

printf("\n")

}

return 0

}

运行样例

(2)题意与输入、输出要求不符,就不做了吧?

(3)

#include "stdio.h"

#include <stdlib.h>

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

int N,k,m,n,q,*p,t

printf("Input N(int 0<N<100001,0 end)...\nN=")

while(1){

if(scanf("%d",&N)!=1 || N<1 || N>100000){

if(N==0)

printf("You have chosen to quit...\n")

else

printf("Input error, exit...\n")

return 0

}

if((p=(int *)malloc(sizeof(int)*N))==NULL){

printf("Application memory failure,exit...\n")

exit(0)

}

printf("Input %d integer(s)...\n",N)

for(m=0m<Nscanf("%d",p+m++))

printf("Input k(int N>=k>0)...\nk=")

scanf("%d",&k)

for(t=m=0m<Nm++){

for(q=m,n=q+1n<Nn++)

if(p[q]>p[n])

q=n

if(m!=q)

n=p[m],p[m]=p[q],p[q]=n

printf("%6d",p[m])

if(!t && k==p[m])

t=m+1

}

printf("\n")

printf(t ? "It is at %d\n\n" : "No find...\n\n",t)

free(p)

}

return 0

}

运行样例:

(4)

#include "stdio.h"

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

int a[50],i,j,k,n

printf("Input n(int 0<n<50,0 end)...\n")

while(1){

printf("n=")

if(scanf("%d",&n)!=1 || n<1 || n>49){

if(n==0)

printf("You have chosen to quit...\n")

else

printf("Input error, exit...\n")

return 0

}

printf("Input %d integer(s)...\n",n)

for(i=0i<nscanf("%d",a+i++))

printf("a[0] = %d\n",a[0])

for(i=0i<ni++){

for(k=i,j=k+1j<nj++)

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

k=j

if(k-i)

j=a[k],a[k]=a[i],a[i]=j

printf("%6d",a[i])

}

printf("\n\n")

}

return 0

}

运行样例:

首先说明一下,这道题目的答案却是是 3。

我在编译器运行了一下你的代码:

接下来分析一下这个题目的流程:

1、在if(x <y)这个判断条件中,x==1, y==-1,条件是不成立的,所以走else分支

2、在else分支中,z==2,现在 z+=1之后, z==3。

3、在最后一步printf中打印最终结果z == 3。

如果以上回答对你有帮助,请采纳下,谢谢。

#include <stdio.h>

struct student

{

int number

char name[20]

int age

char address[50]

float class1grade

float class2grade

float class3grade

float avegrade

char ranklevel

int rank

}

student schoolstu[100]

void input(int n) //学生人数n。

{

for(int i=0i<ni++)

{

scanf("%d%s%d%s",&schoolstu[i].number,schoolstu[i].name,&schoolstu[i].age,schoolstu[i].address)

scanf("%f%f%f",&schoolstu[i].class1grade,&schoolstu[i].class2grade,&schoolstu[i].class3grade)

}

}

void average(int n)

{

for(int i=0i<ni++)

{

schoolstu[i].avegrade=(schoolstu[i].class1grade+schoolstu[i].class2grade+schoolstu[i].class3grade)/3

}

}

void gradeclass(int n)

{

for(int i=0i<ni++)

{

if(schoolstu[i].avegrade>=90) schoolstu[i].ranklevel = 'A'

else if(schoolstu[i].avegrade>=80 &&schoolstu[i].avegrade<90) schoolstu[i].ranklevel = 'B'

else if(schoolstu[i].avegrade>=70 &&schoolstu[i].avegrade<80) schoolstu[i].ranklevel = 'C'

else if(schoolstu[i].avegrade>=60 &&schoolstu[i].avegrade<70) schoolstu[i].ranklevel = 'D'

else schoolstu[i].ranklevel = 'E'

}

}

void rank(int n)

{

int temp=1

for(int i=0i<ni++)

{

for(int j=0j<nj++)

{

if(schoolstu[i].avegrade<schoolstu[j].avegrade)

temp++

}

schoolstu[i].rank = temp

}

}

void print(int n)

{

for(int i=0i<ni++)

{

printf("%d %s %d %s ",schoolstu[i].number,schoolstu[i].name,schoolstu[i].age,schoolstu[i].address)

printf("%f %f %f %f ",schoolstu[i].class1grade,schoolstu[i].class2grade,schoolstu[i].class3grade,schoolstu[i].avegrade)

printf("%c %d\n",schoolstu[i].ranklevel,schoolstu[i].rank)

}

}

int main()

{

int n=0

scanf("%d",&n)

input(n)

average(n)

gradeclass(n)

rank(n)

print(n)

return 0

}