练习题:
注:标有(课堂)字样的为课上练习,其他为课下练习
基础题(50题)
1、(课堂)编写程序,输出“XXX欢迎来到动物园!”(XXX是自己的名字)。

 //1、(课堂)编写程序,输出“XXX欢迎来到动物园!”(XXX是自己的名字)。

 #include<stdio.h>
#define N 20
int main(){
char ch[N]={};
//while(gets(ch)!=NULL){
//puts(姓名);
gets(ch);
puts(ch);
puts("欢迎来到动物园"); //} return ;
}

 //1、(课堂)编写程序,输出“XXX欢迎来到动物园!”(XXX是自己的名字)。

 #include<stdio.h>
#define N 20
int main(){
char ch[N]={};
scanf("%s",ch);
printf("%s欢迎来到动物园",ch); //} return ;
}

2、(课堂)打印用*组成的字母C

//2、(课堂)打印用*组成的字母C
#include<stdio.h> int main(){ printf(" ***\n");
printf(" * *\n");
printf("*\n");
printf("*\n");
printf("*\n");
printf(" * *\n");
printf(" ***\n");
return ;
}

3、交换杯子里的液体。使用不同的整数代表液体,变量代表杯子。
(课堂)方法1:中间变量法
(课堂)方法2:三步异或法
方法3:加和分减法

#if 0
交换杯子里的液体。使用不同的整数代表液体,变量代表杯子。
(课堂)方法1:中间变量法
(课堂)方法2:三步异或法
#endif #include<stdio.h> void fun1(int *i,int *j){
int temp;
temp=*i;
*i=*j;
*j=temp; }
void fun2(int *i,int *j){
*i^=*j;
*j^=*i;
*i^=*j;
}
int main(){ int i=,j=;
printf("i=%d,j=%d\n",i,j);
fun1(&i,&j);
printf("i=%d,j=%d\n",i,j);
fun2(&i,&j);
printf("i=%d,j=%d\n",i,j); return ;
}

4、(课堂)使用宏定义PI来定义3.1415926,计算圆的面积。

//4、(课堂)使用宏定义PI来定义3.1415926,计算圆的面积。
#include<stdio.h>
#define PI 3.1415926
int main(){
int length,perimiter;
scanf("%d",&length);
perimiter=length**PI;
printf("周长:%d",perimiter);
}

5、(课堂)租船问题。
写程序计算游客需要付的租船的费用。租船每小时30元。游客输入租船时间,计算出租船费用。租船费用=时间*每小时钱数+押金。
要求押金与每小时钱数使用宏定义。

 #if 0
、(课堂)租船问题。
写程序计算游客需要付的租船的费用。租船每小时30元。游客输入租船时间,计算出租船费用。租船费用=时间*每小时钱数+押金。
要求押金与每小时钱数使用宏定义。
#endif
#include<stdio.h>
#define unit 30
#define deposite 100 int main(){
int time,total;
printf("请输入时间");
scanf("%d",&time);
total=time*unit+deposite;
printf("总价:%d",total);
return ;
}

6、(课堂)求以下数字的原码、反码、补码。(可以使用计算器)
15(10进制)
0xE3A4(16进制)

一、正整数的原码、反码、补码完全一样,即符号位固定为0,数值位相同

二、负整数的符号位固定为1,由原码变为补码时,规则如下:

      、原码符号位1不变,整数的每一位二进制数位求反,得到反码

      、反码符号位1不变,反码数值位最低位加1,得到补码

7、输入一个整数(0~255),输出这个整数代表的ASCII码字符。

#if 0
、输入一个整数(~),输出这个整数代表的ASCII码字符。

  解题思路:
  以%c形式输入以%d形式输出
  以%d形式输入以%c形式输出

#endif
#include<stdio.h> int main(){
char ch;
while(){
scanf("%d",&ch);
printf("%c\n",ch); } return ;
}


7_1、输入整数代表的ASCII码字符,输出这个一个整数(0~255)。
 #if 0
7_1、输入整数代表的ASCII码字符,输出这个一个整数(~)。

  解题思路:
  以%c形式输入以%d形式输出
  以%d形式输入以%c形式输出

 #endif
#include<stdio.h> int main(){
char ch;
while(){
scanf("%c",&ch);
getchar();
printf("%d\n",ch);
} return ;
}

8、输入一个字符,判断这个字符是0~9之间的数字,还是大写字母,还是小写字母。若都不是输出错误信息。

 #if 0
、输入一个字符,判断这个字符是0~9之间的数字,还是大写字母,还是小写字母。若都不是输出错误信息。

  解题思路:
  多分支条件判断:

 #endif

 #include<stdio.h>

 int main(){
char ch;
scanf("%c",&ch);
if(ch>='a'&&ch<='z'){
printf("%d是小写字母",ch);
}else if(ch>='A'&&ch<='Z'){
printf("%d是大写字母",ch);
}else if(ch>=''&&ch<=''){
printf("%d是数字",ch);
}else{
printf("%d是特殊字符",ch);
} return ;
}

9、计算输入时间的下一秒。例如输入12 15 32,输出12:15:33;输入21 59 59,输出22:00:00。若输入非法时间(如输入小时是25、输入分钟/秒是61等情况)则报错。

 #if 0
、计算输入时间的下一秒。例如输入12 ,输出12::;输入21 ,输出22::。
若输入非法时间(如输入小时是25、输入分钟/秒是61等情况)则报错。

  解题思路:
  一。多分支判断输入数据是否合法:
  二。数据转换规则:
  秒加一
  如果秒加一大于59
  则秒归零,分加一,此时如果分大于59
  则分归零,时加一,此时如果时大于23
  则时归零

  错误分析:
  一。数据转换不是多分支判断;

 #endif

 #include<stdio.h>
void print(int time){
printf("%d:错误数值",time);
} int main(){
int hour,minute,second;
scanf("%d %d %d",&hour,&minute,&second); //判断数据是否合法
if(>hour||hour>){
print(hour);
return ;
}else if(>minute||minute>){
print(minute);
return ;
}else if(>second||second>){
print(second);
return ;
} if((++second)>){
second=;
if((++minute)>){
minute=;
if((++hour)>){
hour=;
}
}
}
printf("%d,%d,%d",hour,minute,second);
return ;
}

10、(课堂)练习:从键盘输入5个学生的成绩(整数),要求输出总成绩(整数)和平均成绩(小数)

 //10、(课堂)练习:从键盘输入5个学生的成绩(整数),要求输出总成绩(整数)和平均成绩(小数)
#include<stdio.h> int main(){ int stu1,stu2,stu3,stu4,stu5;
int sum;
float ave;
scanf("%d %d %d %d %d",&stu1,&stu2,&stu3,&stu4,&stu5);
sum=stu1+stu2+stu3+stu4+stu5;
ave=(float)sum/;
printf("sum=%d,ave=%f",sum,ave);
return ;
}

11、(课堂)读以下程序,猜想输出的结果,再执行程序检验自己的猜想
#include <stdio.h>
int main(void)
{
double y;
float a = 2.0;
int b =6,c=3;
y = a*b/c-1.5+'A';
printf("%f\n",y);
return 0;
}

12、(课堂)读以下程序,猜想输出的结果,再执行程序检验自己的猜想
#include <stdio.h>
int main()
{
int i = 8,j = 10,k = 12;
int m,n,p;

m = ++i;
n = j--;
p = (++m)*(n++)+(--k);
printf("i=%d,j=%d,k=%d\n",i,j,k);
printf("m=%d,n=%d,p=%d\n",m,n,p);
return 0;
}

13、(课堂)设
int a=3,b=4,c=5,d;
分别求出下列表达式的d的值(即判断此表达式真假)

333应该加括号
1)d = a+b>c && b==c
2)d = a || b+c && b-c
3)d = !(a>b) && !c || 1
4)d = !(x=a)&&(y=b)&&0(x和y均为int型,求出x和y的值)
5)d = !(a+b)+c-1 && b+c/2

14、(课堂)输入3个整数,从小到大输出


  #if 0
  14、(课堂)输入3个整数,从小到大输出

  解题思路:
  将所有的项遍历,两两对比所有项。
  #endif

 #include<stdio.h>
void jiao(int *a,int *b){
(*a)^=(*b);
(*b)^=(*a);
(*a)^=(*b);
} int main(){
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
if(a>b){
jiao(&a,&b);
}
if(a>c){
jiao(&a,&c);
}
if(b>c){
jiao(&b,&c);
}
printf("%d %d %d",a,b,c);
return ;
}

15、(课堂)输入3个正整数作为3条线段的长度,判断这3条线段能否构成三角形。构成三角形的条件是:任意两边之和大于第三边

 

  #if 0
  15、(课堂)输入3个正整数作为3条线段的长度,判断这3条线段能否构成三角形。
  构成三角形的条件是:任意两边之和大于第三边


  解题思路:
  对三边长度进行排序
  找到三边中较短的两边,此两边之和大于第三边则可构成第三遍
  #endif

 #include<stdio.h>
void jiao(int *a,int *b){
(*a)^=(*b);
(*b)^=(*a);
(*a)^=(*b);
} int main(){
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
if(a>b){
jiao(&a,&b);
}
if(a>c){
jiao(&a,&c);
}
if(b>c){
jiao(&b,&c);
}
//printf("%d %d %d",a,b,c);
if((a+b)>c){
printf("%d %d %d 可以构成三角形",a,b,c);
}else{
printf("%d %d %d 不可以构成三角形",a,b,c);
}
return ;
}

最新文章

  1. Unity3D开发赛车Demo遇到的问题
  2. 【图文详解】python爬虫实战——5分钟做个图片自动下载器
  3. 。。。无语的Eclipse+Tomact。。。
  4. struts1与struts2的区别
  5. [转] linux下的c/c++调试器gdb
  6. android 补间动画
  7. Why is celsius = 5 * (fahr - 32) / 9 ?
  8. Play初识
  9. [BZOJ]4199 品酒大会(Noi2015)
  10. 第六周java学习总结
  11. [Swift]LeetCode537. 复数乘法 | Complex Number Multiplication
  12. chrome升级后出现滚动条无法滚动
  13. 搭建ssh框架项目(四)
  14. PMS5003ST传感器
  15. 【转】ImageView.ScaleType属性
  16. PPP或PPPOE身份验证PAP和CHAP
  17. bzoj2330糖果
  18. java基础 题和知识点总结, 关于String s是否默认初始化为null......,new一个对象和类静态域,是不是在内存中不是一个地方
  19. Ruby 基础教程 1-1
  20. JavaScript HTML DOM增删改查

热门文章

  1. ubuntu: 终端全屏快捷键
  2. win10怎样彻底关闭windows Defender
  3. C++11/14的新特性——更简洁
  4. [转] 无监督特征学习——Unsupervised feature learning and deep learning
  5. CentOS 安装Perl环境
  6. ShellExecute
  7. Listbox 实现Item双击事件
  8. loj #6079. 「2017 山东一轮集训 Day7」养猫【最大费用最大流】
  9. 求10000以内n的阶乘(openjudge 2923)
  10. uoj#349. 【WC2018】即时战略(动态点分治)