C语言程序设计题库附答案

  • 简答题

1、程序设计(Programming)是根据要解决的问题,使用某种程序设计语言,设计出能够完成这一任务的计算机指令序列。程序设计是指设计、编制、调试程序的方法和过程。

 程序=算法+数据结构+程序设计方法+语言工具和环境

2、程序设计语言,通常简称为编程语言,是一组用来定义计算机程序的语法规则。它是一种被标准化的交流技巧,用来向计算机发出指令。

   语言处理程序把源程序翻译成语义等价的计算机能够识别的低级语言,它是在高级语言(或汇编语言)与计算机之间起到翻译作用的程序。经过语言处理程序处理后得的程序称目标程序。

3、程序设计的基本原则:正确性、有效性、鲁棒性、可理解性、可维护性、可移植性。

4、算法(Algorithm)是为解决某一具体问题而采取的确定的、有限的方法和步骤。

5、算法的基本特征:

有穷性(有限性)、确定性(唯一性)、可行性(能行性)、有0到多个输入、一个算法执行结束之后必须有数据处理结果输出。

6、自然语言描述法:用人们日常使用的语言来描述算法,称为算法的自然语言描述,特点是:存在很大缺陷,如果算法中含有多分支或循环操作,则很难表述清楚。此外,使用自然语言描述算法还很容易造成歧义;

程序流程图描述法:程序流程图(Program Flow Chart)是软件开发者最熟悉的一种算法表达工具,它独立于任何程序设计语言。它的优点是直观、清晰、易于掌握,便于转化成任何计算机程序设计语言。因此,它是软件开发者常用的算法表示方式;缺点:程序流程图的符号在使用过程中不容易规范,特别是在标准中没有严格规定流程线的用法,流程线能够指示流程控制方向的随意转移,很容易造成算法中操作步骤的执行次序混乱,而且不便于开发人员交流。

N-S图描述法:N-S图是1973年由美国学者I.Nassi和B.Shneiderman提出的一种新的流程图形式,N和S是两学位者姓氏的首字母。在这种流程图中,摒弃了带箭头的流程线。算法的具体内容都写在一个矩形柜内,框内又可以包含其他的从属框。

7、略

8、结构化程序设计是一种面向过程的设计思想,把程序定义为"数据结构+算法",它包括三种基本结构:顺序结构、选择结构和循环结构。

9、(1)使用程序设计语言中的顺序、选择、循环等有限的控制结构表示程序的控制逻辑; 

(2)选用的控制结构只允许有一个入口和一个出口; 

(3)程序语句组成容易识别的语句序列块,每块只允许有一个入口和一个出口; 

(4)复杂结构的程序设计时,仅用嵌套的基本控制结构进行组合嵌套来实现; 

(5)严格控制无条件转移(goto)语句的使用。

一、选择题

1-8、CABDDCCC

二、填空题

1、main   {}

2、/*    */

3、头文件

4、数据类型

5、函数首部   函数体

三、简答与程序设计

1、略

2、略

3、#include "stdio.h"

   void main()

   {

    printf("********************************\n");

    printf("      C语言的学习要努力!\n");

    printf("********************************\n");

   }

4、#include "stdio.h"

   void main()

   {

    int a,b;

    printf("输入两个数值分别给 a,b:");

    scanf("%d%d",&a,&b);

    printf("%d-%d=%d\n",a,b,a-b);

   }

一、选择题

1~5:CBBCB  

6~10:CDCCD

11-12:DB

二、填空题

1、16

2、b=i+1   c

3、i<=9  j%3!=0

4、1 3 2

5、j<=i   f=f*j

三、程序设计题

1、void main()

{ int a,b;

   scanf("%d",&a);

if(a/10000==a%10&&(a/1000%10)== (a%100)/10)

   printf("%d",a);

}

2、void main()

{ int i=1,s=0,flag=1;

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

   { s=s+i*flag;

      flag=flag*(-1);

   }

   printf("%d",s);

}

3、void main()

{ int n,i,s=1;

  scanf ("%d", &n);

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

  { s=s*i;

  }

  printf (" n!=%d", s);

}

4、#include <stdio.h>

#include <math.h>

int fun(float a,float b,float c)

{

if(b*b+c*c==a*a||a*a+c*c==

    b*b||b*b+a*a==c*c)

  return 1;

}

void  main( )

 { float a,b,c;

   printf("Please input three numbers:\n"); scanf("%f%f%f",&a,&b,&c);

   if( fun(a,b,c) == 1)

     printf("Yes\n");

   else

     printf("No\n");

   getch( );  }

5、void main()

 {  int a,i,j,n,s=0,w=0;

    scanf("%d,%d",&a,&n);

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

     {  w=0;

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

      { w=w*10+a;}  

      s=s+w;

      }

 printf("%d\n",s);

}

6、void main()

{int a,b,c;

 for(a=1; ;a++)

 { b=(int)sqrt(a+100);

    c=(int)sqrt(a+268);

if(b*b==a+100&& c*c==a+268)

    {printf("%d\n",a); break;}

  }

}

7、void main()

{int x,y,z; /*x表示鸡翁,y表示鸡雏*/

   for(y=1;y<=300;y++)

     { if(y%3!=0) continue;

        for(x=1;x<=20;x++)

         {if(100-x-y<0) continue;

          if(x*5+(100-x-y)*3+y/3==100)

          printf("%d,%d,%d\n",x,100-x-y,y);

         }

     }

}

8、void main()

{  int i,s=0,w=0,n;

   scanf("%d",&n);

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

    { w=0;

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

         {w=w+j;}

     s=s+w;

    }

   printf("%d\n",s);

}

一、选择题

1-5、CCBDC  6-10、BCAAD  11-15、AABCC  16-20、ADDDD

二、填空题

1、i==j  a[i][j]

2、j<N   a[i][j]=a[j][i]

3、k=i  j=i max=a[k]  a[k]=a[j]  a[j]=max

4、b[i][j+1]=a[i][j]   i=0  i<2   printf("\n")

5、a[N][N]   (i+1)*N-j

6、58

7、1  2  3

   0  5  6

   0  0  9

8、5 7 4 8 9 1

   1 5 7 4 8 9

   9 1 5 7 4 8

   8 9 1 5 7 4

   4 8 9 1 5 7

   7 4 8 9 1 5

9、1 0 0 1 0

10、21

三、程序设计

1、#include "stdio.h"

   void main()

   { int i,ave,sum=0,a[10];

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

{

scanf("%d",&a[i]);

sum=sum+a[i];

ave=sum/10;

}

printf("ave=%d\n",ave);

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

{

if(a[i]<ave)

printf("%4d",a[i]);

}

     }

2、#include "stdio.h"

   void main()

   {

   int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};

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

    { p=i;q=a[i];

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

        if(q<a[j]) {p=j;q=a[j];}

           if(p!=i)

           {

            s=a[i];a[i]=a[p];a[p]=s;

           }

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

   }

   printf("\ninput number:\n");

   scanf("%d",&n);

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

     if(n>a[i])

     {for(s=9;s>=i;s--) a[s+1]=a[s];

      break;}

    a[i]=n;

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

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

   printf("\n");

}

3、#include "stdio.h"

   void main()

   {

int i,n,a[5]={0};

printf("输入0到4之间的数,以-1结束!\n");

scanf("%d",&n);

while(n!=-1)

{

switch(n)

{

case 0:a[0]++;break;

case 1:a[1]++;break;

case 2:a[2]++;break;

case 3:a[3]++;break;

case 4:a[4]++;break;

default:break;

}

scanf("%d",&n);

}

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

{   printf("%d:%d",i,a[i]);

printf("\n");

}

   }

4、#include "stdio.h"

   #define SIZE 30

   void main()

   {

float b[SIZE/5],sum=0;

int a[SIZE],i,j,k;

for(k=2,i=0;i<SIZE;i++)

{ a[i]=k;  k+=2; }

for(k=0,i=0;i<SIZE;i++)

{ sum+=a[i];

  j=i+1;

  if((i+1)%5==0)

  { b[k]=sum/5;

   sum=0;

   k++;}

}

printf("The result is:\n");

for(i=0;i<SIZE/5;i++)

printf("%5.2f ",b[i]);

printf("\n");

   }

5、#include "stdio.h"

   #define N 10

   void main()

   {

int i,j,a[N][N]={0};

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

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

   {

   if((i==j)||(j==0))

   a[i][j]=1;

   }

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

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

   {

      a[i][j]=a[i-1][j-1]+a[i-1][j];   

   }

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

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

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

    printf("\n");

   

}

    }

6、#include "stdio.h"

   void main()

   {

int day[2][13]={ {0,31,28,31,30,31,30,31,30,31,30,31,30},{0,31,29,31,30,31,30,31,30,31,30,31,30}};

int year,month,leap=0;

printf("请输入年份:");

scanf("%d",&year);

printf("请输入月份:");

scanf("%d",&month);

if(year%400==0||year%4==0&&year%100!=0)

leap=1;

printf("%d年%d月有%d天!\n",year,month,day[leap][month]);

}

7、#include "stdio.h"

  void main()

   { int i,j,a[5][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};

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

{  for(j=0;j<5;j++)

  {

   if(i>=j)

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

  }

  printf("\n");

}

}

一、选择题

1~5:DBDAD

6~10:BCDCD

11~15:ADACA

16~20:DACBC

二、填空题

1、4  2

2、3  5

3、9911

4、7777654321

5、16

6、*pmax=*px

7、10

8、efgh

9、s-1  *s++

10、p+n

三、程序设计题

1、#include "stdio.h"

void main()

{

    float f,*fpointer;

    fpointer=&f;

    scanf("%f",fpointer);

    printf("%f",*fpointer);

}

2、#include <stdio.h>

void output(char *s)

{

int i;

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

printf("%c",*(s+i));

}

void main( )

{char *s;

 gets(s);

 output(s);

}

3、void Input(int a[], int n)

{int i;

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

  scanf(“%d”,&a[i]);

}

void Process(int a[], int n)

{int i,k,w,t,max,min;

  max=min=a[0];

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

   {if(max<a[i]) {max=a[i]; k=i;}

     if(min>a[i]) {min=a[i];w=i;}

   }

 t=a[k];a[k]=a[w];a[w]=t;

}

void Output(int a[], int n)

{int i;

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

  scanf(“%d”,&a[i]);

}

void main( )

{int num[10],n=10;

 Input(num, n);

Process (num, n);

Output(num, n);

}

4、#include<stdio.h>

void main()

{

 char *str;

 int k;

 printf("请输入字符串:");

 scanf("%s",str);

 k=strlen(str);

/*for(i=0;i<k/2;i++)

{

 ch=str[i];

str[i]=str[k-i-1];

str[k-i-1]=ch;

}*/

printf("字符串逆序输出:");

while(k--)

{

printf("%c",*(str+k));

}

}

5、void main()

{char str[100];

  int i,a[20],j=0;

  scanf(“%s”,str)

    for(i=0;str[i]!=‘\0’;i++)

  { a[j]=0;

     while(str[i]>=‘0’&&str[i]<=‘9’)

     {a[j]=a[j]*10+str[i]- ‘0’; i++;}

     j++;

  }

}

6、#include<stdio.h>

#include<string.h>

int main()

{

 char *str;

 int count[5]={0,0,0,0,0};//创建计数器数组并初始化

 char *p=str;//指针p指向字符串数组str

 int i,n;

  gets(str);

 n=strlen(str);//确定输入字符串的长度

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

 {

  if(*(p+i)>='A'&&*(p+i)<='Z')

  {

   count[0]++;//统计大写字母数目

  }

  else if(*(p+i)>='a'&&*(p+i)<='z')

  {

   count[1]++;//统计小写字母数目

  }

  else if(*(p+i)>='0'&&*(p+i)<='9')

  {

   count[2]++;//统计数字数目

  }

  else if(*(p+i)==32)

  {

   count[3]++;//统计空格数目

  }

  else

  {

   count[4]++;//统计其他字符数目

  }

 }

 printf("大写字母   小写字母  数字   空格    其他字符:\n");

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

 {

  printf("%d\t     ",count[i]);//打印各统计数目

 }

}

7、#include<stdio.h>

main()

{

int n;

int array[100];

int a=0,b,c;

int i,j;

scanf("%d",&n);

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

array[i]=i;

c=n;

b=0;

do

{

for (i=1,j=0;i<=n;i++)

{

if(array[i]%3==0&&array[i]!=0)

{array[i]=0;j++;}

else if(array[i]==0);

else

array[i]=array[i]+c-j;

}  

b=c/3;

c=c-j;

a=a+c;

}while(b);

for (i=1,j=0;i<=n;i++)

{

if(array[i]%3==0&&array[i]!=0)

{array[i]=0;j++;}

else if(array[i]==0);

else

array[i]=array[i]+c-j;

}  

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

{

if(array[i]!=0) printf("it's %d!\n",i);

}

}

8、#include<stdio.h>

adjustAry5(int source[5][5] ){

    int N=5,LOOP=4;

    int *pMax,*pAry[4];

    int i,j,k,z,ibreak,zbreak,tmp;

    pMax=pAry[0]=&source[0][0];

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

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

            if(source[i][j] > *pMax){

                pMax=&source[i][j];

            }else if (source[i][j] < *pAry[0]){

                pAry[0]=&source[i][j];

            }

        }

    }

    if(pMax==&source[0][0]){

        pMax=pAry[0];

    }

    tmp=source[0][0];source[0][0]=*pAry[0];*pAry[0]=tmp;pAry[0]=&source[0][0];

    tmp=source[2][2];source[2][2]=*pMax;*pMax=tmp;pMax=&source[2][2];

    for(k=1;k<LOOP;k++){

        pAry[k]=pMax;

        ibreak=0;

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

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

                if((source[i][j]<*pAry[k]) && (source[i][j] >= *pAry[k-1])){

                    zbreak=0;

                    for(z=k-1;z>-1;z--){

                        if((pAry[z]== (&source[i][j]) )){

                            zbreak=1;

                            break;

                        }

                    }

                    if(zbreak==1) continue;

                    

                    pAry[k]=&source[i][j];

                    if(*pAry[k]==*pAry[k-1] ){

                        ibreak=1;

                        break;

                    }

                }

            }

            if(ibreak==1) break;

        }

        switch(k){

            case 1:

                 tmp=source[0][4];source[0][4]=*pAry[k];*pAry[k]=tmp;pAry[k]=&source[0][4];

                 break;

            case 2:

                tmp=source[4][0];source[4][0]=*pAry[k];*pAry[k]=tmp;pAry[k]=&source[4][0];

                 break;

            case 3:

                tmp=source[4][4];source[4][4]=*pAry[k];*pAry[k]=tmp;pAry[k]=&source[4][4];

                 break;

        }

    }

}

void print_array5(int source[5][5]){

   int i,j;

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

    for(j=0;j<5;j++){

            printf("%2d\t",source[i][j]);

        }

        printf("\n");

    }

    printf("\n");

}

void main()

{

    int i,j;

    int b[5][5]={ {35,34,33,32,31},{30,29,28,27,26},{25,24,23,22,21},{20,19,18,17,16},{15,14,13,12,11} }    ;

    printf("Please input data? (Array[5][5])\n");

    print_array5(b);    

    adjustAry5(b);    

    print_array5(b);

}

9、void main(){

int n;

char *name[12]={"January","February","March","April","May","June","July","August","September","October","November","December"};

for(n=1;n<=12;n++)

printf("%s\n",name[n-1]);

}

10、void main(){

int n;

char *name[12]={"January","February","March","April","May","June","July","August","September","October","November","December"};

scanf("%d",&n);

printf("%s\n",name[n-1]);

}

11、#define M 3

#define N 4

void main(){

int a[M][N];

int i,j;

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

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

  {

   scanf("%d",*(a+i)+j);

  }

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

{

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

  {

   printf("%4d ",*(*(a+i)+j));

  }

  printf("\n");

 }

}

12、#include<stdio.h>

int s[4][5];

void fun1()//输入4个学生的5门成绩

{

int i,j;

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

{

printf("请输入第%d位学生的成绩",i+1);

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

{

scanf("%d",*(s+i)+j);

}

}

}

void fun2()//求第一门成绩的平均分

{

float avg=0.0;

int i,sum=0;

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

{

sum=sum+*(*(s+i));

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高校知识店铺合集汇总

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值