C语言练习题:if语句(12题)
1.判定三角形类型
/*
__author__ = 'xiaofeizhang'
函数作用:判定三角形类型
*/
#include <stdio.h>
int main(void){
float a, b, c;
printf("请输入第一条边的长度:%f", &a);
scanf("%f", &a);
printf("第一条边的长度为:%f\n", a);
printf("请输入第二条边的长度:%f", &b);
scanf("%f", &b);
printf("请输入第三条边的长度:%f", &c);
scanf("%f", &c);
if (a>=b+c || b>=a+c || c>=a+b){
printf("这三条边无法组成一个三角形\n");
}
else{
if (a==b && a==c && b==c){
printf("这是一个等边三角形\n");
}
else if (a==b || a==c || b==c){
printf("这是一个等腰三角形\n");
}
else if(a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a){
printf("这是一个直角三角形");
}
}
return 0;
}
/*
请输入第一条边的长度:0.0000001
第一条边的长度为:1.000000
请输入第二条边的长度:0.0000002
请输入第三条边的长度:0.0000003
这三条边无法组成一个三角形
--------------------------------
Process exited after 2.5 seconds with return value 0
请按任意键继续. . .
*/
2.根据x的不同,输出不同的y
/*
__author__ = 'xiaofeizhang'
函数作用: 根据x的不同,输出不同的y
*/
#include<stdio.h>
int main(void){
int x, y;
printf("请输入x的值:");
scanf("%d", &x);
if(x>0){
y = 1;
}
else if (x == 0){
y = 0;
}
else{
y = -1;
}
printf("y的值为%d", y);
return 0;
}
/*
请输入x的值:-1
y的值为-1
请输入x的值:0
y的值为0
请输入x的值:1
y的值为1
--------------------------------
Process exited after 0.975 seconds with return value 0
请按任意键继续. . .
*/
3.判定某年某月有多少天
/*
__author__ ='xiaofeizhang'
函数作用:判定某年某月有多少天
*/
#include<stdio.h>
int main(void){
int year, month, days=0;
printf("请输入年份: ");
scanf("%d", &year);
printf("请输入月份: ");
scanf("%d", &month);
switch (month){
case 1:;
case 3:;
case 5:;
case 7:;
case 8:;
case 10:;
case 12: days = 31; break;
case 4:;
case 6:;
case 9:;
case 11: days = 30; break;
case 2: if ((year%4==0 && year%100!=0)||year%400==0){
days = 29; }
else{
days = 28;
break;
}
}
if (days != 0){
printf("%d年%d月有%d天", year,month,days);
}
else {
printf("输入的时间有问题");
}
return 0;
}
/*
请输入年份: 2019
请输入月份: 2
2019年2月有28天
--------------------------------
Process exited after 4.642 seconds with return value 0
请按任意键继续. . .
*/
4.简单计算器
/*
__author__ ='xiaofeizhang'
函数作用:简单计算器
*/
#include <stdio.h>
int main(void){
float a, b;
int symbol;
printf("请输入第一个操作数:");
scanf("%f", &a);
printf("请输入第二个操作数:");
scanf("%f", &b);
printf("请输入操作符\n");
printf("1: 为乘法 *\n");
printf("2: 为除法 /\n");
printf("3: 为加法 +\n");
printf("4:为减法 -\n");
printf("请输入:");
scanf("%d", &symbol); //找问题,找了半天,最后才发现是scanf函数输入格式有问题,记住这个取地址符号&
switch(symbol){
case 1: printf("结果为:%f", a*b); break;
case 2: printf("%f 除以 %f 的结果为:%f\n", a, b, a/b); break;
case 3: printf("%f 加上 %f 的结果为:%f\n", a, b, a+b); break;
case 4: printf("%f 减去 %f 的结果为:%f\n", a, b, a-b); break;
default: printf("输入的操作符可能有些问题,请检查后重新输入");
}
return 0;
}
/*
请输入第一个操作数:2
请输入第二个操作数:3
请输入操作符
1: 为乘法 *
2: 为除法 /
3: 为加法 +
4:为减法 -
请输入:3
2.000000 加上 3.000000 的结果为:5.000000
--------------------------------
Process exited after 8.262 seconds with return value 0
请按任意键继续. . .
*/
5.判定一个数字能否被7整除
/*
__author__ ='xiaofeizhang'
函数作用: 判定一个数字能否被7整除
*/
#include <stdio.h>
int main(void){
int num;
printf("请输入一个正数:");
scanf("%d", &num);
// 输入的字符串中如果含有数字和字母,输入函数会从第一位开始寻找数字,找到就输出,找不到就截止对应
// 如果首位为字母,直接输出0
if (num%7==0 && num%11==0){
printf("输入的数值为:%d, 该数能否被7或者11整除:Yes\n", num);
}
else{
printf("输入的数值为:%d, 该数能否被7或者11整除:No\n", num);
}
return 0;
}
/*
请输入一个正数:18
输入的数值为:18, 该数能否被7或者11整除:No
--------------------------------
Process exited after 2.748 seconds with return value 0
请按任意键继续. . .
*/
6.判断一个数是否为整数
/*
__author__ ='xiaofeizhang'
函数作用: 判断一个数是否为整数
*/
#include <stdio.h>
bool check(const char *p) {
if(p == NULL)
return 0;
else {
while(*p != '\0') {
if(*p <= '9' && *p++ >= '0')
continue;
else
return 0;
}
}
return 1;
}
int main()
{
bool count;
bool check(const char *p);
count = check("123456.");
if (count){
printf("输入数据的类型为数值类型");
}
else {
printf("输入的类型不为数值类型");
}
return 0;
}
/*
输入的类型不为数值类型
--------------------------------
Process exited after 0.0212 seconds with return value 0
请按任意键继续. . .
*/
7.求解二元一次方程的解
/*
__author__ ='xiaofeizhang'
函数作用: 求解二元一次方程的解
*/
#include <stdio.h>
#include <math.h>
int main(void){
float a, b, c, delta;
float x1, x2;
printf("请输入系数a: ");
scanf("%f", &a);
printf("请输入系数b: ");
scanf("%f", &b);
printf("请输入系数c: ");
scanf("%f", &c);
// a = 1; b= 2; c=1;
if (a > 0 || a<0 ){
delta = b*b - 4*a*c;
printf("delta的值为:%lf\n", delta);
if (delta<0){
printf("该方程无解");
}
else if (delta==0){
x1 = -b / (2 * a);
printf("该方程有两个相同的解, %f, %f\n", x1, x1);
}
else {
x1 = (-b + sqrt(delta)) / (2 * a);
x2 = (-b - sqrt(delta)) / (2 * a);
printf("该方程有两个不相同的解,解一为:%f, 解二为:%f\n", x1, x2);
}
}
else{
printf("这不是一个二元一次方程");
}
return 0;
}
/*
请输入系数a: 2
请输入系数b: 4
请输入系数c: 1
delta的值为:8.000000
该方程有两个不相同的解,解一为:-0.292893, 解二为:-1.707107
--------------------------------
Process exited after 4.65 seconds with return value 0
请按任意键继续. . .
*/
8.确定一个正数的位数以及反转
/*
__author__ ='xiaofeizhang'
函数作用: 确定一个正数的位数以及反转
*/
#include <stdio.h>
#include<string.h>
int main(void){
int symbol, symbol_copy, len=0, symbol_reverse=0, tmp;
printf("请输入一个位数不多于4位的正整数:");
// scanf("%c", &symbol); // strlen函数为 返回字符串的长度
// len = strlen(symbol);
scanf("%d", &symbol);
symbol_copy = symbol;
while (symbol)
{
tmp = symbol % 10;
symbol_reverse = symbol_reverse * 10 + tmp;
symbol = symbol / 10;
len++;
}
printf("%d 的位数为 %d\n", symbol_copy, len);
printf("%d这个序列的反序列为: %d", symbol_copy, symbol_reverse);
}
/*
请输入一个位数不多于4位的正整数:399
399 的位数为 3
399这个序列的反序列为: 993
--------------------------------
Process exited after 4.271 seconds with return value 0
请按任意键继续. . .
*/
9.使用随机函数
/*
__author__ ='xiaofeizhang'
函数作用: 使用随机函数
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void){
int num, rnd;
srand(time(NULL)); //srand 返回的是随机数序列, time(NULL)返回的是从1970/1/1/0/0/0到当前时间的秒数
printf("已经过去多少%d秒了\n", time(NULL));
// rnd = rand(); //该随机函数确实可以生成一个随机数,该数的范围为0~Rand_max之间,但是时伪随机数
rnd = rand()%100+1; //该随机数的范围为1~100之间
printf("预设值为:%d\n", rnd);
printf("猜猜看(1-100之间):");
scanf("%d", &num);
if (num>rnd){
printf("猜大了哟");
}
else if (num<rnd){
printf("猜小了哟");
}
else{
printf("恭喜你,猜对了");
}
return 0;
}
/*
已经过去多少1546506166秒了
预设值为:16
猜猜看(1-100之间):2
猜小了哟
--------------------------------
Process exited after 6.061 seconds with return value 0
请按任意键继续. . .
*/
10.输入三个数,并按照从小到大顺序排列
/*
__author__ = 'xiaofeizhang'
函数作用:输入三个数,并按照从小到大的顺序排列
*/
#include <stdio.h>
bool check(const char *p) {
if(p == NULL)
return 0;
else {
while(*p != '\0') {
if(*p <= '9' && *p++ >= '0')
continue;
else
return 0;
}
}
return 1;
}
int main()
{
int a, b, c;
int new_1, new_2, new_3;
bool count;
bool check(const char *p);
printf("请输入a:\n");
scanf("%d", &a);
printf("请输入b:\n");
scanf("%d", &b);
printf("请输入c:\n");
scanf("%d", &c);
if (a>=b && a>=c){
new_1 = a;
if (b>c){
new_2 = b;
new_3 = c;
}
else {
new_2 = c;
new_3 = b;
}
}
if (b>=a && b>=c){
new_1 = b;
if (a>=c){
new_2 = a;
new_3 = c;
}
else {
new_2 = c;
new_3 = a;
}
}
if (c>=a && c>=b){
new_1 = c;
if (a>=b){
new_2 = a;
new_3 = b;
}
else {
new_2 = b;
new_3 = a;
}
}
printf("这组数据从小到大为:%d, %d, %d\n", new_3, new_2, new_1);
count = check("12345.6");
if (count){
printf("输入数据的类型为数值类型");
}
else {
printf("输入的类型不为数值类型");
}
return 0;
}
/*
请输入a:
123
请输入b:
321
请输入c:
456
这组数据从小到大为:123, 321, 456
输入的类型不为数值类型
--------------------------------
Process exited after 5.888 seconds with return value 0
请按任意键继续. . .
*/
11.自动售卖机
/*
__author__ = 'xiaofeizhang'
函数作用:自动售卖机
*/
#include <stdio.h>
int main(void){
int choice;
printf(" ***** 自动售卖机清单 *****\n");
printf(" ***** 1. 瓜子 *****\n");
printf(" ***** 2. 花生 *****\n");
printf(" ***** 3. 爆米花 *****\n");
printf(" ***** 4. 可乐 *****\n");
printf(" ***** 5. 雪碧 *****\n");
printf(" ***** 6. 果汁 *****\n");
printf(" ***** 7. 咖啡 *****\n");
printf("请输入你想购买的物品序号(1-7):\n");
scanf("%d", &choice);
switch (choice){
case 1: printf("这是你购买的瓜子\n"); break;
case 2: printf("这是你购买的花生\n"); break;
case 3: printf("这是你购买的爆米花\n"); break;
case 4: printf("这是你购买的可乐\n"); break;
case 5: printf("这是你购买的雪碧\n"); break;
case 6: printf("这是你购买的果汁\n"); break;
case 7: printf("这是你购买的咖啡\n"); break;
default: printf("你下的单有问题,请检查后,在重新下单\n");
}
return 0;
}
/*
***** 自动售卖机清单 *****
***** 1. 瓜子 *****
***** 2. 花生 *****
***** 3. 爆米花 *****
***** 4. 可乐 *****
***** 5. 雪碧 *****
***** 6. 果汁 *****
***** 7. 咖啡 *****
请输入你想购买的物品序号(1-7):
6
这是你购买的果汁
--------------------------------
Process exited after 3.891 seconds with return value 0
请按任意键继续. . .
*/
12.字符转换
/*
__author__ = 'xiaofeizhang'
函数作用:字符转换
*/
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char symbol, symbol_change;
printf("请输入要转化的内容(大写字母,小写字母,数字):");
symbol = getchar();
if ('A'<=symbol && symbol<='Z'){
symbol_change = symbol + 32;
printf("本次输入的字符为:%c\n", symbol);
printf("转化以后的字符为:%c\n", symbol_change);
}
else if ('0'<=symbol && symbol<='9'){
symbol_change = symbol-48;
printf("本次输入的字符为:%c\n", symbol);
printf("转化以后的字符为:%d\n", symbol_change);
}
else if ('a'<=symbol && symbol<='z'){
symbol_change = symbol - 32;
printf("本次输入的字符为:%c\n", symbol);
printf("转化以后的字符为:%c\n", symbol_change);
}
else {
printf("输入的字符可能不在本次转化的考察范围之内\n");
exit(0);
}
return 0;
}
/*
请输入要转化的内容(大写字母,小写字母,数字):j
本次输入的字符为:j
转化以后的字符为:J
--------------------------------
Process exited after 3.495 seconds with return value 0
请按任意键继续. . .
*/
网友评论