C语言算法题–周整理<2020.09.05>
一、C语言允许初始化列表中出现多余逗号,例如:
int days[] = { 31, 28, 31, 30, 31, 30, 31, 31, 31,}; 大家思考一下为什么这种特性是有用的?
答:(1)多个逗号更方便的添加数据
(2)
二、解释一下什么是原码反码补码。
答:
原码:即带符号的二进制数,第一位表示正负(“1”表示负,“0”表示正),其余位表示数值大小。
反码:正数的反码与原码相同;负数的反码就是对原码数值位逐位求反,符号位不变。
补码:正数的补码与原码相同;负数的补码是在反码的末位加 1 。
三、编程题:将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。 如:输入“I am a student”,输出“tneduts a ma I”。
代码:
/*
程序说明: 输入字符串,倒叙输出
*/
#include <stdio.h>
#include<string.h>
int main(int argc, char *argv[])
{
char str[100] = "";
printf("请输入字符串:\n");
gets(str); //输入字符串
char temp;
int length = strlen(&str[0]);
printf("字符串长度: %d\n", length);
if (length <= 100)
{
for (int i = 0; i <= length/2 - 1; i++)
{
temp = str[i];
str[i] = str[length - 1 - i];
str[length - 1 - i] = temp;
}
printf("输出结果:%s\n", str);
}
system("PAUSE");
return 0;
}
运行结果:
四、编程题:青年歌手参加歌曲大奖,有5个评委打分,写一个求平均分的程序,但是要求去除最高分和最低分。
代码:
/*
程序说明:求平均分,要求去除最高分和最低分。
*/
#include <stdio.h>
#include <stdlib.h>
int main(int argv, char *argc[]) {
int score[5] = {
0 };
int temp = 0;
int sum = 0