c语言相关练习学习有感2
1.
int main()
{
char a = 0, ch;
while ((ch = getchar()) != '\n')//当getchar输入的不是一个回车时就会进入到while函数里面,
{
if (a % 2 != 0 && (ch >= 'a' && ch <= 'z'))
ch = ch - 'a' + 'A';
a++;
putchar(ch);
}
printf("\n");
return 0;
}
?
?2.
//int main()
//{//以下哪个选项一定可以将 flag 的第二个 bit 位置 0,且其它 bit 位不变
//
// int flag = 15;//15是个正数原反补码相同
// //15的二进制表示0000 0000 0000 0000 0000 0000 0000 1111
// int a=flag &= ~2;//&按位与有个二进制数,两1为1,有0则0
// //2 的二进制表示0000 0000 0000 0000 0000 0000 0000 0010
// //结果为 0000 0000 0000 0000 0000 0000 0000 0010,第2个比特位不变,其他都变,不符合
//
// int b=flag != 2;//!=,==是逻辑操作符,成立为1,不成立为0,15!=2成立,答案为1
// //
// // 0000 0000 0000 0000 0000 0000 0000 0001只有第一个不变其他3位都变
//
// int c=flag ^= 2;//^=是按位异或即两1为0,有0则1
// //0000 0000 0000 0000 0000 0000 0000 1111
// //0000 0000 0000 0000 0000 0000 0000 0010
// //结果为
// //0000 0000 0000 0000 0000 0000 0000 1101符合题目要求
//
// int d=flag >>= 2;
//
// //>>=二进制向右移动两位,左边补符号位,正数补0,负数补1,若是向左移动,右边都是补0
// //0000 0000 0000 0000 0000 0000 0000 1111
// //0000 0000 0000 0000 0000 0000 0000 0011
// printf("%d\n", a);//13
// printf("%d\n", b);//1
// printf("%d\n", c);//15
// printf("%d\n", d);//3
//
// return 0;
//}
3.
int main()
{
int x = 1;//do while语句是先执行再判断
//
do {
printf("%2d\n", x++);//x++右置++,先使用再++,打印1,加加后得2
} while (x--);//同理先使用再--,while(2)成立--得1进入循环,死循环
return 0;
}
4.
int main()
{
int a = -3;// 1000 0000 0000 0000 0000 0000 0000 0011
//反码 1111 1111 1111 1111 1111 1111 1111 1100
//补码 1111 1111 1111 1111 1111 1111 1111 1101
unsigned int b = 2;//b位无符号整形0000 0000 0000 0000 0000 0000 0000 0010
long c = a + b;//长整形 电脑使用补码进行相加减
// 0000 0000 0000 0000 0000 0000 0000 0010
// 1111 1111 1111 1111 1111 1111 1111 1101
// 1111 1111 1111 1111 1111 1111 1111 1111
printf("%u\n", c);//%u是打印无符号整形数,即即使是负数也将其认为是无符号整形数,以十进制数表示
//4294967295
return 0;
}
5.
7-1 真睡还是装睡 (15 分)
你永远叫不醒一个装睡的人 —— 但是通过分析一个人的呼吸频率和脉搏,你可以发现谁在装睡!医生告诉我们,正常人睡眠时的呼吸频率是每分钟15-20次,脉搏是每分钟50-70次。下面给定一个人的呼吸频率与脉搏,请你判断他是真睡还是装睡(即至少一项指标不在正常睡眠范围内)。
输入格式:
在一行中输入空格隔开的两个整数,分别表示一个人的呼吸频率和脉搏(均为不超过100的正整数)。
输出格式:
如果判定此人真睡,则输出?T ,否则为装睡,输出?F 。
输入样例 1:
18 55
结尾无空行
输出样例 1:
T
结尾无空行
int main()
{
int breath, pulse;
scanf("%d %d", &breath, &pulse);
if (breath >= 15 && breath <= 20)
{
if (pulse >= 50 && pulse <= 70)
{
printf("T");
}
else
(printf("F"));
}
else
{
printf("F");
}
return 0;
}
运行结果?
?
6.
题述:有一个有序数字序列,从小到大排序,将一个新输入的数插入到序列中,保证插入新数后,序列仍然是升序。
🍳 输入描述:
????第一行输入一个整数(0≤N≤50)。
????第二行输入N个升序排列的整数,输入用空格分隔的N个整数。
????第三行输入想要进行插入的一个整数。
🍳 输出描述:
????输出为一行,N+1个有序排列的整数。
💨 示例:
输入: ????5 ????1 6 9 22 30 ????8 输出: ????1 6 8 9 22 30 ———————————————— 版权声明:本文为CSDN博主「跳动的bit」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/wh128341/article/details/120677309
int sort_up(const void*e1, const void*e2)
{
return (*(int*)e1 - *(int*)e2);
}
int main()
{
int n;
scanf("%d", &n);
int arr[51];
int i = 0;
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
int input;
scanf("%d", &input);
arr[n] = input;
qsort(arr, n + 1, sizeof(arr[0]), sort_up);
for (i = 0; i < n + 1; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
运行结果
?
|