1.使用switch实现银行系统,默认用户为A,密码为1234,余额为2000;如果登录失败,则直接结束;如果登录成功,则显示银行页面:1.查询余额 2.取钱 3.存钱 ;如果是1,则打印余额;如果是2,则输入取钱金额,如果金额大于存款则输出余额不足,否则输出剩余金钱;如果是3,则输入存款金额,输出存款后的金额。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char user=0;
int password=0;
int balance=2000;
int temp=0;
int withdraw=0;
int deposit=0;
printf("请输入用户名和密码:");
scanf("%c%d",&user,&password);
switch(user=='A' && password==1234)
{
case 0:printf("用户登录失败!\n");break;
case 1:printf("用户登录成功\n1.查询余额\n2.取钱\n3.存钱\n");
printf("请输入您的操作:");
scanf("%d",&temp);
break;
}
switch(temp)
{
case 1:printf("余额为:%d\n",balance);break;
case 2:printf("请输入取钱金额:");
scanf("%d",&withdraw);
if(0<withdraw && 2000>withdraw){
printf("剩余金额:%d\n",balance-withdraw);
}else if(withdraw>2000){
printf("余额不足\n");
}else{
printf("您输入的取钱金额不合法!\n");
}
break;
case 3:printf("请输入存钱金额:");
scanf("%d",&deposit);
printf("存入后余额为:%d\n",deposit+balance);
break;
default:printf("您的操作有误,请重新选择\n");break;
}
return 0;
}
2.输入一个日期,输出这是这一年的第几天
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
//输入一个日期,输出这是这一年的第几天
int year=0;
int month=0;
int day=0;
int num=0;
printf("请输入日期:");
scanf("%d/%d/%d",&year,&month,&day);
if(1<=month && 12>=month){
switch(month)//使用case击穿,使每个月的天数都可以相加
{
case 12:num+=30;
case 11:num+=31;
case 10:num+=30;
case 9:num+=31;
case 8:num+=31;
case 7:num+=30;
case 6:num+=31;
case 5:num+=30;
case 4:num+=31;
case 3:if(year%4==0 && year%100!=0 || year%400==0){
num+=29;
}else{
num+=28;
}
case 2:num+=31;
case 1:num+=day;break;
}
}else{
printf("输入的月份有误\n");
}
printf("%d/%d/%d是这一年的第%d天\n",year,month,day,num);
return 0;
}
3.输入一个表达式,实现计算器+-*/%
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
//输入一个表达式,实现计算器+-*/%
double a=0;
double b=0;
char operator=0;
printf("请输入表达式:");
scanf("%lf%c%lf",&a,&operator,&b);
switch(operator)
{
case '+':printf("%lf\n",a+b);break;
case '-':printf("%lf\n",a-b);break;
case '*':printf("%.2lf\n",a*b);break;
case '/':printf("%.1lf\n",a/b);break;
case '%':printf("%d\n",(int)a%(int)b);break;
default:printf("请输入正确的表达式!\n");break;
}
return 0;
}
4.下面代码执行后,a\b\c的结果是?
int a=5,b=7,c;
c=a+++b;
因为自增自减运算符属于单目运算符,优先级要高于’+‘算术运算符,所以表达式是a++ + b,a,b,c结果是6,7,12
5.代码如下:
void main()
{
int c=9,d=0;
c=c++%5;
d=c;
printf("d=%d\n",d);
}
先执行优先级最高的自增运算符c++(c=c+1),然后执行c%5=4,再把c=c+1的值赋值c,最后把c%5的值赋给c,所以d=4
6.给定一个整数,判断它是否被3、5、7整除,并输出以下信息。
1)能同时被3,5,7整除(直接输出357,每个数字之间一个空格)
2)只能内其中两个整数整除(输出两个数,小的在前,大的在后,例如35 或者37 或者57,中间使用空格隔开)
3)只能被其中一个整数整除(输出这个除数)
4)不能被任何数整除,输出小写字母n
案例如下:
输入:105
输出:3 5 7
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int i=0;
printf("输入:");
scanf("%d",&i);
if(i%105==0){
printf("输出:3 5 7\n");
}else if(i%15==0){
printf("输出:3 5\n");
}else if(i%21==0){
printf("输出:3 7\n");
}else if(i%35==0){
printf("输出:5 7\n");
}else if(i%3==0){
printf("输出:3\n");
}else if(i%5==0){
printf("输出:5\n");
}else if(i%7==0){
printf("输出:7\n");
}else{
printf("n\n");
}
return 0;
}
7.请写出下列代码的输出内容
#include<stdio.h>
int main(void)
{
int a, b, c, d;
a=10;b=a++;c=++a;
d=10*a++;
printf("b,c,d:%d,%d,%d",b,c,d);
return 0;
}
b,c,d的值分别为10,12,120
8.写出代码输出内容
void main()
{
int a=180;
char c;
c=(char)++a;
printf("c=%d a=%d\n",c,a);
char d=4;
short e;
e=(++d)++;
printf("d=%d e=%d\n",d,e);
}
c=-75,a=181,d=6,e=5
9.设有以下语句:int a=3.b=6,c;c=a^b<<2; 则c的二进制值是
左移的优先级高于按位异或,所以b的二进制值先左移,然后再与a的二进制值进行按位异或运算,所以c的二进制值为0000 0000 0000 0000 0000 0000 0001 1011