前言:自己刷题过程中的错题本,后续会一直更新。
目录
1. 输入一个班级5个学生各5科成绩,输出5个学生各5科成绩及总分
2.实现字母的大小写转换。多组输入输出
3.能把函数处理结果的二个数据返回给主调函数,在下面的方法中不正确的是:( )
4.喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水(编程实现)。
5.输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。
1. 输入一个班级5个学生各5科成绩,输出5个学生各5科成绩及总分
#include <stdio.h>
int main()
{
int i = 0;
for(i = 0; i < 5; i++)
{
float sum = 0.0;
float score = 0.0;
int j = 0;
for(j = 0; j < 5; j++)
{
scanf("%f",&score);
sum += score;
printf("%.1f ",score);
}
printf("%.1f",sum);
printf("\n");
}
return 0;
}
五个学生,一个一个来输出。
2.实现字母的大小写转换。多组输入输出
假设这是一个缓冲区,当你输入A后,你要按回车键,同时也会将\n放入到缓冲区中,当getchar函数读走A后,它还会继续将\n读走,这样就会在字母之间多出空格,所以我们要做的就是消除\n.
#include <stdio.h>
int main()
{
int ch = 0;
while((ch=getchar())!=EOF)
{
getchar(); //消除\n
if(ch >= 'A' && ch <= 'Z')
{
ch += 32;
}
printf("%c\n",ch);
}
return 0;
}
3.能把函数处理结果的二个数据返回给主调函数,在下面的方法中不正确的是:( )
A选项很明显是不对的
B选项例子
C选项例子
D选项例子
int g_a = 0;
int g_b = 0;
void test()
{
int x = 10;
int y = 20;
g_a = x;
g_b = y;
}
int main()
{
int a = 0;
int b = 0;
test();
a = g_a;
b = g_b;
return 0;
}
4.喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水(编程实现)。
/*
思路:
1. 20元首先可以喝20瓶,此时手中有20个空瓶子
2. 两个空瓶子可以喝一瓶,喝完之后,空瓶子剩余:empty/2(两个空瓶子换的喝完后产生的瓶子) + empty%2(不够换的瓶子)
3. 如果瓶子个数超过1个,可以继续换,即重复2
*/
int main()
{
int money = 0;
int total = 0;
int empty = 0;
scanf("%d", &money);
//方法1
total = money;
empty = money;
while(empty>1)
{
total += empty/2;
empty = empty/2+empty%2;
}
return 0;
}
// 方法二:按照上述喝水和用瓶子换的规则的话,可以发现,其实就是个等差数列:money*2-1
int main()
{
int money = 0;
int total = 0;
int empty = 0;
scanf("%d", &money);
//方法2
if(money <= 0)
{
total = 0;
}
else
{
total = money*2-1;
}
printf("total = %d\n", total);
return 0;
}
5.输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。
/*
思路:
1. 给定两个下标left和right,left放在数组的起始位置,right放在数组中最后一个元素的位置
2. 循环进行一下操作
a. 如果left和right表示的区间[left, right]有效,进行b,否则结束循环
b. left从前往后找,找到一个偶数后停止
c. right从后往前找,找到一个奇数后停止
d. 如果left和right都找到了对应的数据,则交换,继续a,
*/
void swap_arr(int arr[], int sz)
{
int left = 0;
int right = sz-1;
int tmp = 0;
while(left<right)
{
// 从前往后,找到一个偶数,找到后停止
// (left<right)加了这个条件是防止数组越界。
while((left<right)&&(arr[left]%2==1))
{
left++;
}
// 从后往前找,找一个奇数,找到后停止
while((left<right)&& (arr[right]%2==0))
{
right--;
}
// 如果偶数和奇数都找到,交换这两个数据的位置
// 然后继续找,直到两个指针相遇
if(left<right)
{
tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)