C语言机试参考试题及其讲解


#include <stdio.h>


//********************************************************************************
//示例
//********************************************************************************
void exe0()
{
 printf("/n <示例>: 任意输入10个数,求和./n");
 printf(" <函数原型如下>:  int sum(int *a)./n");
 printf(" <要求>:在主调函数中输入这10个数,调用函数,输出结果./n");

 int a[10];
 int *p=a;
 printf("/n请输入10个整数:/n");
 for(;p<a+10;p++)
  scanf("%d",p);
 int sum(int *a);    //声明函数原型
 printf("这10个数的和为:%d./n",sum(a));
}
//********************************************************************************
int sum(int *a)
{
 int s=0;
 int *p=a;
 for(;p<a+10;p++)
  s+=*p;
 return s;
}
//********************************************************************************
//试题一
//********************************************************************************
void exe1()
{
 printf("/n <试题1>: 实现两个字符串的连接./n");
 printf(" <要求>: 不要用strcat函数./n");

 //我的解答

 char s1[80],s2[40];
 int i=0,j=0;
 printf("请输入第一个字符串:");
 scanf("%s",s1);
 printf("请输入第二个字符串:");
 scanf("%s",s2);
 while(s1[i]!='/0')i++;//统计s1中字符串长度i,即s1的最大下标+1
 while(s2[j]!='/0')s1[i++]=s2[j++];//先赋值s1[i]=s2[j],然后i++,j++,完成后i的值即为最大下标+1
 s1[i]='/0';//给这个元素赋值'/0',表示字符串结尾
 printf("连接后的结果:s=%s/n",s1);

 //
}
//********************************************************************************
//试题二
//********************************************************************************
void exe2()
{
 printf("/n <试题2>: 求100-999中的水仙花数/n");
 printf("/n (若三位数abc,a3+b3+c3=abc,则称abc为水仙花数。)/n");
 printf("/n (例如153,13+33+53=153,则153称为水仙花数。)/n");
 printf(" <要求>: 用循环结构和数组实现./n");

 // 我的解答:在哪里使用数组??-_-!
 
 int i,j,k,n,sxhi=0;
 int sxh[900]={0};//记录水仙花数
 for(n=100;n<1000;n++)
 {
  i=n/100; //百位
  j=n/10-i*10;//十位
  k=n%10;  //个位
  if(n==i*i*i+j*j*j+k*k*k)
  {
   sxh[sxhi]=n;//将就这道题的要求…其实不用数组,直接输出结果就可以了嘛。
   sxhi++;
  }
    }
 printf("100~999之间的水仙花数有:/n");
 sxhi=0;
 while(sxh[sxhi]!=0)
 {
  printf("%d/n",sxh[sxhi]);
  sxhi++;
 }
 //

}
//********************************************************************************
//试题三
//********************************************************************************
void exe3()
{
 printf(" <试题3>: 编写一个函数,判断输入的年份是否为闰年./n");
 printf(" <函数原型如下>: int isleap(int year)./n");
    printf(" <要求>: (1)形参year为判断的年份,返回值为1则为闰年,返回值0则为平年./n");
 printf("         (2)在主调函数中输入年份,调用函数fun,输出结果./n");

 //我的解答

 int year,flag=0;
 int isleap(int year);
 printf("请输入年份:");
 scanf("%d",&year);
 flag = isleap(year);
 if(flag==1)
 {
  printf("闰年/n");
 }
 else
  printf("平年/n");
}

int isleap(int year)
{
 int flag=0;
 if( year%400==0 || ((year%100)!=0 && year%4==0) )
  flag = 1;
 return flag;
} //

 

 

//********************************************************************************
//********************************************************************************
//********************************************************************************
//********************************************************************************
//********************************************************************************
//********************************************************************************
void main()
{
 int sel;
 do
 {
  printf("/t/t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/n");
  printf("/t/t     计算机学院XXXX专业上机考试模式示例    /n");
  printf("/t/t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/n"); 
  printf("/t/t/t111  示例    /n");
  printf("/t/t/t1  试题1    /n");
  printf("/t/t/t2  试题2    /n");
  printf("/t/t/t3  试题3    /n");
  printf("/t/t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/n"); 
  printf("/t/t/t0  退出系统/n"); 
  printf("/t/t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/n"); 
  printf("请选择:");
  scanf("%d",&sel);
  switch(sel)
  {
  case 111:exe0();break;
  case 1:exe1();break;
  case 2:exe2();break;
  case 3:exe3();break;
  case 0:printf("/n/n/t/t/t/t^-^,再见!/n/n/n");break;
  }
 }while(sel!=0);
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值