3.8網絡第1場 8:40-9:40
- 1.輸入一串字符串,保留前面和中間的"#",刪除后面所有連續的"#"。如輸入"Hello#C####",輸出"Hello#C"
#include <stdio.h>
#include <string.h>
int main(){
char s[100];
int i, length, new_length;
printf("請輸入字符串,要求以#結束\n");
gets(s);
length = strlen(s);
for(i = length - 1; i>=0; i--){
if(s[i] == '#'){
s[i] = '\0';
new_length --;
}
else {
break;
}
}
printf("刪除后方#后的字符串為:\n");
puts(s);
return 0;
}
- 2.輸入桌子的平米和椅子的數量,如果是1平米,價格是1200;如果是2平米,價格是2200。如果椅子數量不高于4個,每把價格100元,否則超過4個的部分每把價格80元。輸入桌子的平米數(1或2)以及椅子的數量,計算總價格
#include <stdio.h>
int main(){
int num1, num2, money1, money2, total;
printf("請輸入桌子的平方數(1或2):\n");
scanf("%d", &num1);
printf("請輸入椅子的數量:\n");
scanf("%d", &num2);
switch(num1){
case 1:
money1 = 1200; break;
case 2:
money1 = 2200; break;
}
if(num2>0 && num2 <= 4){
money2 = 100 * num2;
}
else if(num2 > 4){
money2 = 100 * 4 + (num2 - 4) * 80;
}
total = money1 + money2;
printf("桌子花費%d元,椅子花費%d元,共計%d元.", money1, money2, total);
return 0;
}
3.8網絡第2場 10:50-11:50
- 1.現有2個數組a和b,請將a數組中有但b數組中沒有的字符存入數組c并輸出c
#include <stdio.h>
#include <string.h>
#define MAX 100
int main(){
char a[MAX], b[MAX], c[MAX];
int length_a, length_b, i, j, k = 0;
printf("請輸入字符串a的值:");
gets(a);
printf("請輸入字符串b的值:");
gets(b);
length_a = strlen(a);
length_b = strlen(b);
for(i = 0; i < length_a; i++){
for(j = 0; j < length_b; j++){
if(a[i] == b[j]){
break;
}
}
if(j == length_b){
c[k++] = a[i];
}
}
c[k] = '\0';
printf("數組a中有但數組b中沒有的字符為:%s", c);
return 0;
}
// 上述代碼有一個小bug,即當a為"nihaoa",b為"woshi"的時候,c為"naa",嚴格來講c應該為"na"
// 解決方法有很多,比如在遍歷數組a時先進行一次去重操作
- 2.有一本書共160頁,第一天讀了10頁,以后每天都比前一天多讀5頁,請問幾天可以讀完,最后一天讀了多少頁?
#include <stdio.h>
int main(){
int day = 1, page_every_day = 10, page_total = 10;
int last_day_pages;
while(page_total <= 160){
page_every_day += 5;
page_total += page_every_day;
day++;
}
last_day_pages = 160 - (page_total - page_every_day);
printf("一共讀了%d天 最后一天讀了%d頁", day, last_day_pages);
return 0;
}
3.8網絡第3場 14:00-15:00
- 1.用戶輸入密碼進行判斷,總共有5次機會。如果正確則提示密碼正確,否則提示密碼錯誤,并提醒剩余的可用次數
#include <stdio.h>
#include <string.h>
#define MAX 100
int main(){
int count = 5;
char pwd[MAX] = "hello@845";
char user_pwd[MAX];
while(count >= 1){
printf("請輸入用戶密碼:");
gets(user_pwd);
if(strcmp(pwd, user_pwd) == 0){
printf("登錄成功,正在退出...");
break;
}
count --;
printf("登錄失敗!剩余%d次機會\n", count);
if(count == 0){
printf("次數已用完");
}
}
return 0;
}
- 2.某出租車公司規定6:00-23:00打車,3km之內是8元,超過3km的話每公里多收3元。23:00-次日6:00打車,3km之內是10元,超過3km的話每公里多收3.5元。輸入時間段和公里數,求車費共多少元
#include <stdio.h>
int main(){
int time;
float distance, money;
while(1){
printf("請輸入時間和行駛公里數:");
scanf("%d %f", &time, &distance);
if(time < 0 || distance < 0){
printf("輸入有誤!, 請重新輸入!\n");
continue;
}
if(time >= 6 && time < 23){
if(distance <= 3){
money = 8 * distance;
}
else {
money = 3 * 8 + (distance - 3) * (8 + 3);
}
}
else {
if(distance <= 3){
money = 10 * distance;
}
else {
money = 3 * 10 + (distance - 3) * (10 + 3.5);
}
}
printf("%d點行駛了%.3f公里,支付%.3f元", time, distance, money);
break;
}
return 0;
}
3.8網絡第4場 16:10-17:10
- 1.現有10名同學的成績,求最高分是多少,并計算最高分出現了多少次
#include <stdio.h>
int main(){
int score[10] = {89, 90, 78, 95, 91, 95, 95, 88, 65, 80};
int max = score[0], count = 0, i;
for(i = 1; i < 10; i++){
if(score[i] > max){
max = score[i];
}
}
for(i = 0; i < 10; i++){
if(score[i] == max){
count ++;
}
}
printf("最高分為%d, 出現了%d次", max, count);
return 0;
}
- 2.輸入正整數n,統計1-n的數中一共出現了多少次8
#include <stdio.h>
int main(){
int n, count = 0, i, data, a;
printf("請輸入n的值:");
scanf("%d", &n);
for(i = 1; i <= n; i++){
data = i;
while(data){
a = data%10;
if(a == 8){
count++;
}
data /= 10;
}
}
printf("一共出現了%d次8", count);
return 0;
}
#include <stdio.h>
int cal_eight(int);
int main(){
int n, count, a;
printf("請輸入n的值:");
scanf("%d", &n);
count = cal_eight(n);
printf("一共出現了%d次8", count);
return 0;
}
int cal_eight(int num){
int i, data, a, count = 0;
for(i = 1; i <= num; i++){
data = i;
while(data){
a = data % 10;
if(a == 8){
count++;
}
data /= 10;
}
}
return count;
}
3.8軟件第1場 8:00-9:00
- 1.求運費
- 2.輸入字符串,統計大寫字母、小寫字母和數字的個數
#include <stdio.h>
#define MAX 100
int main(){
char s[MAX], t;
int i = 0, num_upper = 0, num_lower = 0, num_digit = 0;
printf("請輸入字符串:");
gets(s);
while(s[i] != '\0'){
t = s[i];
if(t >= 'A'&& t <= 'Z'){
num_upper++;
}
else if(t >= 'a'&&t <= 'z'){
num_lower++;
}
else if(t >= '0'&&t <= '9'){
num_digit++;
}
i++;
}
printf("大寫字母%d個, 小寫字母%d個, 數字字符%d個", num_upper, num_lower, num_digit);
return 0;
}
3.8軟件第2場 11:00-12:00
#include <stdio.h>
float cal_avg_age(int s[], int n){
int i;
float avg = 0;
for(i = 0; i < n; i++){
avg += s[i];
}
avg /= n;
return avg;
}
int main(){
int age[6] = {25, 50, 31, 37, 19, 20}, n = 6;
float avg_age;
avg_age = cal_avg_age(age, n);
printf("平均年齡為%.2f", avg_age);
return 0;
}
#include <stdio.h>
#include <string.h>
#define MAX 100
int main(){
char user_pwd[MAX], pwd[MAX] = "hello@904";
printf("請輸入用戶密碼:");
gets(user_pwd);
if(strcmp(user_pwd, pwd) == 0){
printf("密碼正確, 登錄成功!");
}
else{
printf("密碼錯誤, 登錄失敗!");
}
return 0;
}
3.8軟件第3場 13:00-14:00
#include <stdio.h>
#define ROW 3
#define COL 3
int main(){
int a[ROW][COL] = {4, 12, 5, 6, 7, 0, 9, 2, 13}, max[ROW] = {0};
int i, j;
for(i = 0; i < ROW; i++){
max[i] = a[i][0];
for(j = 1; j < COL; j++){
if(a[i][j] > max[i]){
max[i] = a[i][j];
}
}
printf("第%d行的最大值為%d\n", i + 1, max[i]);
}
return 0;
}
- 2.輸入數字n,輸出n行"*",第1行輸出1個,第2行輸出2個,以此類推,用func函數實現
#include <stdio.h>
#include <stdlib.h>
void print_char(int m){
int i, j;
for(i = 1; i <= m; i++){
for(j = 1; j <= i; j++){
printf("*");
}
printf("\n");
}
}
int main(){
int i, j, n;
printf("請輸入正整數n的值:");
scanf("%d", &n);
if(n <= 0){
printf("數值異常!\n");
exit(-1);
}
print_char(n);
return 0;
}
3.8軟件第4場 15:00-16:00
- 1.某商場打折促銷,購物滿300元不足500元享3%折扣,滿500元享5%折扣。輸入消費金額,計算打折后應付款
#include <stdio.h>
int main(){
float amount, money, discount;
printf("請輸入消費金額:");
scanf("%f", &amount);
if(amount > 0&&amount < 300){
discount = 0;
}
else if(amount >= 300&&amount < 500){
discount = 0.03;
}
else{
discount = 0.05;
}
money = amount * (1 - discount);
printf("消費金額為%.2f,付款%.2f", amount, money);
return 0;
}
- 2.判斷字符串中的字母個數,將所有字母都轉換成大寫字母并輸出
#include <stdio.h>
#define MAX 100
int main(){
char s[MAX], t;
int i = 0, count = 0, upper, lower;
printf("請輸入字符串的值:");
gets(s);
while(s[i] != '\0'){
t = s[i];
upper = t >= 'A'&&t <= 'Z';
lower = t >= 'a'&&t <= 'z';
if(upper||lower){
count++;
if(lower){
s[i] -= 32;
}
}
i++;
}
printf("字母個數為%d, 字符串內容為%s", count, s);
return 0;
}
- 3.在長度為8的一維數組中打印奇數元素的最大值,如果沒有奇數就打印"未找到奇數元素"
#include <stdio.h>
#define LEN 8
int main(){
int arr[LEN] = {8, 6, 4, 52, 6, 59, 44, 17};
int t, i = 0, count = 0, j, max;
for(i = 0; i < LEN; i++){
if(arr[i] % 2){
count++;
max = arr[i];
break;
}
}
if(count == 0){
printf("未找到奇數元素");
}
else{
for(j = i + 1; j < LEN; j++){
t = arr[j];
if(t % 2&&t > max){
max = t;
}
}
printf("奇數元素的最大值為%d", max);
}
return 0;
}
- 4.自定義函數進行猜數。如果輸入的數過大就打印"猜大了",輸入的數過小就打印"猜小了",否則顯示"猜對了"
#include <stdio.h>
void guess(int m, int n){
if(m > n){
printf("猜大了!");
}
else if(m < n){
printf("猜小了");
}
else{
printf("猜對了");
}
}
int main(){
int sys_num = 7, guess_num;
printf("請輸入您猜的數:");
scanf("%d", &guess_num);
guess(guess_num, sys_num);
return 0;
}
3.8軟件第5場 17:00-18:00
#include <stdio.h>
int main(){
int a, b;
printf("請輸入a的值:");
scanf("%d", &a);
if(a%2){
b = a % 10;
printf("%d是奇數, 個位數為%d", a, b);
}
else{
printf("%d不是奇數", a);
}
return 0;
}
- 2.輸入字符c,判斷c是大寫字母、小寫字母、數字字符還是其他字符
#include <stdio.h>
int main(){
char c;
printf("請輸入字符的值:");
scanf("%c", &c);
if(c >= 'A'&&c <= 'Z'){
printf("%c是大寫字母", c);
}
else if(c >= 'a'&&c <= 'z'){
printf("%c是小寫字母", c);
}
else if(c >= '0'&&c <= '9'){
printf("%c是數字字符", c);
}
else{
printf("%c是其他字符", c);
}
return 0;
}
- 3.現有分段函數,當x<=0時,y=x+6;當0<x<10時,y=3x+6;當x>=10時,y=3x-6。輸入x的值求對應y的值
#include <stdio.h>
int main(){
float x, y;
printf("請輸入x的值:");
scanf("%f", &x);
if(x <= 0){
y = x + 6;
}
else if(x < 10){
y = 3 * x + 6;
}
else{
y = 3 * x - 6;
}
printf("當x=%.2f時, y=%.2f", x, y);
return 0;
}
- 4.三名裁判分別對三位運動員打分,統計每個運動員的平均分
#include <stdio.h>
#define ROW 3
#define COL 3
int main(){
float score[ROW][COL], avg_score[ROW];
int i, j;
printf("請輸入3名運動員的得分情況(3*3):\n");
for(i = 0; i < ROW; i++){
for(j = 0; j < COL; j++){
scanf("%f", &score[i][j]);
}
}
for(i = 0; i < ROW; i++){
avg_score[i] = 0;
for(j = 0; j < COL; j++){
avg_score[i] += score[i][j];
}
avg_score[i] /= COL;
printf("第%d名運動員的平均分為%.2f\n", i + 1, avg_score[i]);
}
return 0;
}
3.9網絡第1場 8:40-9:40
-
- 2.輸入字符串,分別計算元音字母的個數,不區分大小寫,用switch結構實現
#include <stdio.h>
#define MAX 100
int main(){
char s[MAX];
int i = 0, count_a = 0, count_e = 0, count_i = 0, count_o = 0, count_u = 0;
printf("請輸入一個字符串:");
gets(s);
while(s[i] != '\0'){
switch(s[i]){
case 'A':
case 'a':
count_a++;
break;
case 'E':
case 'e':
count_e++;
break;
case 'I':
case 'i':
count_i++;
break;
case 'O':
case 'o':
count_o++;
break;
case 'U':
case 'u':
count_u++;
break;
}
i++;
}
printf("a e i o u的個數為:%d %d %d %d %d", count_a, count_e, count_i, count_o, count_u);
return 0;
}
3.9網絡第2場 10:50-11:50
- 1.輸入一串字符,刪除其中重復的字符,保證每個字符只輸出1次
// "hellokjcm" 只需要將第2個"l"后方的"okjcm"依次往前移動即可
// "heckjclmnp" 只需要將第2個"c"后方的"lmnp"依次往前移動即可
// "heckjcclmnp" 需要將第2個"c"后方的"clmnp"依次往前移動后,還要再將最后1個c后方的"clmnp"依次往前移動
// "hellokjclmoee" 第1個"l"后方的所有字符往前移動無法滿足需求,因為后面還有一個"l",它后方的"moee"也需要依次往前移動
#include <stdio.h>
#include <string.h>
#define MAX 100
int main(){
char s[MAX];
int i, j, k, length;
printf("請輸入字符串的內容:");
gets(s);
length = strlen(s);
for(i = 0; i < length - 1; i++){
for(j = i + 1; s[j] != '\0'; j++){
k = j;
// 只要k指向的字符和i指向的字符一致,那就將k后方的所有字符依次往前移動一個單位
if(s[k] == s[i]){
while(s[k] != '\0'){
s[k] = s[k + 1];
k++;
}
length--;
}
// 如果重復字符后方所有字符往前移動后,j指向的字符依然和i相同(即有連續兩個相同的字符),如果直接執行for循環中的"j++",那這個重復字符就無法被刪除。所以先執行"j--"后執行for循環中的"j++",保證了j的位置沒變,繼續刪除重復字符
if(s[j] == s[i]){
j--;
}
}
}
printf("刪除之后的字符串為:");
puts(s);
return 0;
}
#include <stdio.h>
#define MAX 1000
int main(int argc, const char * argv[]) {
// insert code here...
char ch1[MAX], ch2[MAX], c; // ch1存儲輸入的字符串 ch2存儲刪除重復字符后的字符串 c為ch1中字符的值
int i, j = 0, index, cnt[256] = {0};
printf("請輸入字符串ch1:");
gets(ch1);
for (i = 0; ch1[i] != '\0'; i++) {
c = ch1[i];
index = (int)c; // 將c的ASCII碼值作為下標
if (cnt[index] == 0) {
cnt[index]++;
ch2[j++] = c;
}
}
ch2[j] = '\0';
printf("去除重復字符串后的值為:");
puts(ch2);
return 0;
}
- 2.收水費的規則如下:第1個月的用水量不超過10立方米的話,每立方米收費5元,超過的部分每立方米收費6元。如果第1個月用水量高于15立方米,則第2個月每立方米收費6元,否則按第1個月的收費方式計算。輸入每個月的用水數量,輸出水費
#include <stdio.h>
int main(){
float water[3] = {0, 16, 20}, money_1 = 0, money_2 = 0, money;
if(water[1] <= 10){
money_1 += water[1] * 5;
}
else{ // water[1] > 10
money_1 += 10 * 5 + (water[1] - 10) * 6;
if(water[1] <= 15){ // 10<water[1]<=15
if(water[2] <= 10){
money_2 += water[2] * 5;
}
else{
money_2 += 10 * 5 +(water[2] - 10) * 6;
}
}
else{ // water[1] > 15
money_2 += water[2] * 6;
}
}
money = money_1 + money_2;
printf("水費為%.2f元", money);
return 0;
}
3.9網絡第3場 14:00-15:00
- 1.輸入一個三位數num,如果能找到多組連續的整數,這些整數相加的和為num,請輸出項數最多的一組連續整數。如輸入102,3+4+5+6+7+8+9+10+11+12+13+14=102,24+25+26+27=102, 33+34+35=102。第一種情況項數更多,所以輸出3 4 5 6 7 8 9 10 11 12 13 14
#include <stdio.h>
int main(){
int num, i, j, k, sum, mid;
int flag = 0;
printf("請輸入一個整數:");
scanf("%d", &num);
mid = num / 2;
for(i = 1; i <= mid; i ++){
sum = i;
for(j = i + 1; j <= mid + 1; j++){
sum += j;
if(sum == num){
flag = 1;
for(k = i; k <= j; k++){
printf("%d ", k);
}
// printf("\n");
break;
}
}
if(flag){
return 0;
}
}
printf("無法分解");
return 0;
}
- 2.當溫度高于38攝氏度時為高溫天氣。請輸入多天的氣溫,直到輸入0攝氏度為止,輸出高溫占比以及最高溫度
#include <stdio.h>
int main(){
float temperature, rate;
// count表示高溫的個數,total表示溫度總的個數
int count = 0, total = 0;
printf("請輸入溫度,直到輸入0攝氏度為主:");
scanf("%f", &temperature);
while(temperature != 0){
if(temperature > 38){
count++;
}
scanf("%f", &temperature);
total++;
}
total++; // 將最后輸入的0攝氏度加上
rate = (count*1.0/total)*100;
printf("總共輸入了%d個溫度,其中高溫占了%d個,占比為%.2f%%", total, count, rate);
return 0;
}
3.9網絡第4場 16:10-17:10
- 1.輸入一串數字字符,若含其他字符則提示輸入錯誤并退出程序,否則輸出數字字符的個數
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
int main(){
char ch[MAX];
int i = 0, count = 0;
printf("請輸入一串數字字符:\n");
gets(ch);
while(ch[i] != '\0'){
if(ch[i] < '0'||ch[i] > '9'){
printf("輸入錯誤,強制退出...");
exit(-1);
}
else{
count++;
}
i++;
}
printf("數字字符共%d個", count);
return 0;
}
- 2.輸入每天運動的步數(輸入-1結束),輸出運動的天數和平均步數。若每天不低于8000步表示達標,請計算達標率是多少
#include <stdio.h>
int main(){
int num_step, day = 0, day_dst = 0;
float rate = 0, avg_step = 0;
printf("請輸入當天運動的步數(輸入-1結束):");
scanf("%d", &num_step);
while(num_step != -1){
if(num_step < 0){
printf("數據非法,請重新輸入運動步數:");
scanf("%d", &num_step);
continue;
}
else{
avg_step += num_step;
day++;
if(num_step >= 8000){
day_dst++;
}
}
printf("繼續輸入運動的步數:");
scanf("%d", &num_step);
}
// 如果剛開始直接輸入-1,day=0不能作為除數
if(day==0){
avg_step = 0;
rate = 0;
}
else{
avg_step /= day;
rate = day_dst * 1.0 / day * 100;
}
printf("day=%d, avg_step=%.2f, rate=%.2f%%", day, avg_step, rate);
printf("\n結束程序!");
return 0;
}
![]()
3.10網絡第1場 8:40-9:40
- 1.輸入字符串,輸出其中的數字字符。例如輸入
25*6*6#,輸出"2566"
#include <stdio.h>
#define MAX 100
int main(){
char ch[MAX];
int i = 0;
printf("請輸入一串字符:");
gets(ch);
while(ch[i] != '\0'){
if(ch[i] >= '0'&&ch[i] <= '9'){
putchar(ch[i]);
}
i++;
}
return 0;
}
- 2.輸入若干整數,輸出其中奇數各位數的和,偶數各位數的乘積,直到輸入0結束
nt main(){
int num, sum, multy, b, t;
printf("請輸入若干整數(輸入0結束):");
scanf("%d", &num);
while(num != 0){
t = num;
sum = 0, multy = 1;
while(t){
b = t % 10;
if(b % 2){
sum += b;
}
else{
multy *= b;
}
t /= 10;
}
printf("%d各奇數位的和為%d, 各偶數位的積為%d\n請繼續輸入整數:", num, sum, multy);
scanf("%d", &num);
}
printf("end...\n");
return 0;
}
3.10網絡第2場 10:50-11:50
#include <stdio.h>
#define ROW 3
#define COL 4
int main(){
int a[ROW][COL], i, j, sum = 0;
float avg;
printf("請輸入3行4列數組的值:\n");
for(i = 0; i < ROW; i++){
for(j = 0; j < COL; j++){
scanf("%d", &a[i][j]);
sum += a[i][j];
}
}
avg = sum * 1.0 / (ROW * COL);
printf("avg=%.2f", avg);
return 0;
}
#include <stdio.h>
#define MAX 100
int main(){
// i用作輸入5個數的循環變量, j用作數組a的下標, 數組a用作存儲num每一位的數, t用于暫存num的值
int num, i, j, k, t, a[MAX] = {0};
printf("請輸入5個正整數:");
for(i = 0; i < 5; i++){
scanf("%d", &num);
j = 0;
t = num;
while(t){
a[j] = t % 10;
j++;
t /= 10;
}
for(k = 0; k < j / 2; k++){ // k用作對稱比較數據的下標
if(a[k] != a[j - k - 1]){
break;
}
}
if(k == j / 2){ // for循環正常退出時執行
printf("%d是回文數\n", num);
}
}
return 0;
}
3.10網絡第3場 14:00-15:00
- 1.輸入字符串,刪除其中的空格字符并輸出新的字符串。如"AB C",輸出"ABC"
#include <stdio.h>
#include <string.h>
#define MAX 100
int main(){
char s[MAX];
int i = 0, j, length;
printf("請輸入字符串:");
gets(s);
length = strlen(s);
while(s[i] != '\0'){ // i指向索引為length-1的位置'\0'時循環退出
if(s[i] == ' '){
for(j = i + 1; j < length; j++){ // 該循環用于將空格字符后的所有字符往前移動, 但索引為length的'\0'沒有往前移動
s[j - 1] = s[j];
}
length--;
if(s[i] == ' '){ // 如果有2個或2個以上連續的空格存在, 此時即使第1個空格之后的所有字符往前移動了,但i指向的位置依然是空格,所以在執行i自增之前先做一次自減的操作, 以保證后續空格也被消除
i--;
}
}
i++;
}
s[length] = '\0'; // 將length位置處的字符賦值為'\0'
puts(s);
return 0;
}
#include <stdio.h>
#include <string.h>
#define MAX 100
int main(){
char s[MAX];
int i = 0, j, length;
printf("請輸入字符串:");
gets(s);
length = strlen(s);
while(s[i] != '\0'){ // i指向索引為length-1的位置'\0'時循環退出
if(s[i] == ' '){
for(j = i + 1; j <= length; j++){ // 該循環用于將空格字符后的所有字符往前移動, 含索引為length的'\0'
s[j - 1] = s[j];
}
length--;
if(s[i] == ' '){ // 如果有2個或2個以上連續的空格存在, 此時即使第1個空格之后的所有字符往前移動了,但i指向的位置依然是空格,所以在執行i自增之前先做一次自減的操作, 以保證后續空格也被消除
i--;
}
}
i++;
}
puts(s);
return 0;
}
- 2.輸入7個帶小數位的成績,去掉最大值和最小值,求出剩余5個數的平均值
#include <stdio.h>
int main(){
float score[7], sum = 0, avg;
int i, max = 0, min = 0;
printf("請輸入7個帶小數位的成績:");
for(i = 0; i < 7; i++){
scanf("%f", &score[i]);
}
max = min = 0;
for(i = 1; i < 7; i++){
if(score[i] > score[max]){
max = i;
}
if(score[i] < score[min]){
min = i;
}
}
for(i = 0; i < 7; i++){
if(max != i&&min != i){
sum += score[i];
}
}
avg = sum / 5;
printf("avg=%.2f", avg);
return 0;
}
3.11網絡第1場 8:40-9:40
- 1.加權平均數相關點
- 2.輸入一個整數n,輸入一組除數,輸出可以整除的數,除數輸入0結束
#include <stdio.h>
#define MAX 100
int main(){
int n, div, a[MAX], i = 0, j;
printf("請輸入n的值:");
scanf("%d", &n);
printf("接下來輸入一組除數,直到0停止:");
scanf("%d", &div);
while(div != 0){
if(n % div == 0){
a[i++] = div;
}
scanf("%d", &div);
}
if(i == 0){
printf("不存在可整除的除數!");
return -1;
}
printf("能被整除的除數有:");
for(j = 0; j < i; j++){
printf("%d ", a[j]);
}
return 0;
}
3.11網絡第2場 10:50-11:50
- 1.買票問題:成人票800元,兒童票300元。現有團購優惠(兒童不計入團購人數)三人以下不享受優惠;三人到十五人(含3、15),成人享受每人80元優惠;十五人以上,若包含兒童,免除一名兒童收費,若沒有兒童,每位成人再享受二十元優惠。輸入總人數和兒童數,輸出支付價格。
#include <stdio.h>
int main(){
int adult, child, total, money;
printf("請分別輸入成人和兒童的數量:");
scanf("%d %d", &adult, &child);
while(1){
if(adult < 0||child < 0){
printf("輸入數據異常!請重新輸入...\n");
scanf("%d %d", &adult, &child);
continue;
}
total = adult + child;
if(total >= 0&&total < 3){
money = adult * 800 + child * 300;
}
else if(total >= 3&&total <= 15){
money = adult * 720 + child * 300;
}
else if(total > 15){
if(child >= 1){
money = adult * 800 + (child - 1) * 300;
}
else{
money = adult * 780;
}
}
break;
}
printf("money=%d", money);
return 0;
}
- 2.輸入A和B兩個數組,取出A中有但B中沒有的,放到C數組里,輸出C
#include <stdio.h>
#include <string.h>
#define MAX 100
int main(){
char a[MAX], b[MAX], c[MAX];
int length_a, length_b, i, j, k = 0;
printf("請輸入字符串a的值:");
gets(a);
printf("請輸入字符串b的值:");
gets(b);
length_a = strlen(a);
length_b = strlen(b);
for(i = 0; i < length_a; i++){
for(j = 0; j < length_b; j++){
if(a[i] == b[j]){
break;
}
}
if(j == length_b){
c[k++] = a[i];
}
}
c[k] = '\0';
printf("數組a中有但數組b中沒有的字符為:%s", c);
return 0;
}
3.11網絡第3場 14:00-15:00
- 1.輸入一個長度大于3的字符串,在第3個字符后邊加一個"#",然后輸出
#include <stdio.h>
#include <string.h>
#define MAX 1000
int main(){
char s[MAX];
int i, length;
printf("請輸入長度大于3的字符串:");
gets(s);
while(1){
length = strlen(s);
if(length <= 3){
printf("長度不合法, 請重新輸入!\n");
gets(s);
continue;
}
for(i = length; i >= 3; i--){
s[i + 1] = s[i];
}
s[i + 1] = '#';
break;
}
puts(s);
return 0;
}
- 2.輸入一個整數n,輸出個位、十位和百位加和等于n的三位數。例如輸入2,輸出101、110、200,共3個
#include <stdio.h>
int main(){
int n, i;
printf("請輸入整數n的值:");
scanf("%d", &n);
for(i = 100; i <= 999; i++){
if(i%10 + i/10%10 + i/100 == n){
printf("%d ", i);
}
}
return 0;
}
3.11網絡第4場 16:10-17:10
- 1.現有小明6門課的成績,求他的平均成績。若不低于60分為及格,計算小明及格和不及格的門數
#include <stdio.h>
#define LEN 6
int main(){
int i, a[LEN], count = 0;
float avg = 0;
printf("請輸入6門課成績:");
for(i = 0; i < LEN; i++){
scanf("%d", a + i);
avg += a[i];
if(a[i] >= 60){
count++;
}
}
avg /= 6;
printf("平均分:%.2f, 及格:%d門, 不及格:%d門", avg, count, 6-count);
return 0;
}
- 2.輸入第一個正整數,然后輸入一個運算符(只能加減乘除任意一個),再輸入一個正整數,求出它們的運算結果
#include <stdio.h>
int main(){
int a, b;
char opr;
float ret;
while(1){
printf("依次輸入正整數 運算符 正整數:");
scanf("%d %c %d", &a, &opr, &b);
if(a <= 0||b<= 0||(opr != '+'&&opr != '-'&&opr != '*'&&opr != '/')){
printf("輸入數據非法,請重新輸入...\n");
continue;
}
if(opr == '+'){
ret = a + b;
}
else if(opr == '-'){
ret = a - b;
}
else if(opr == '*'){
ret = a * b;
}
else if(opr == '/'){
ret = a / b;
}
break;
}
printf("%d%c%d=%.2f", a, opr, b, ret);
return 0;
}
3.12網絡第1場 8:40-9:40
- 1.輸入一個正整數m,找到能整除m且十位數是5的所有三位數并放到一個數組中
#include <stdio.h>
#define MAX 900
int main(){
int m, i, j, k = 0, a[MAX] = {0};
printf("請輸入m的值:");
scanf("%d", &m);
for(i = 100; i <= 999; i++){
j = i / 10 % 10;
if(i % m == 0&&j == 5){
a[k++] = i;
}
}
for(i = 0; i < k; i++){
printf("%d ", a[i]);
}
return 0;
}
- 2.一個商場中有12個柜子,3行4列排列。柜子的狀態為0表示空,1表示使用,-1表示故障。請輸出柜子的使用率和故障率
#include <stdio.h>
#define ROW 3
#define COL 4
int main(){
int i, j, s[ROW][COL] = {1, 0, 0, 1, 1, 1, -1, -1, 0, 0, -1, 1};
int count_use = 0, count_error = 0;
float pct_use, pct_error;
for(i = 0; i < ROW; i++){
for(j = 0; j < COL; j++){
if(s[i][j] == 1){
count_use++;
}
if(s[i][j] == -1){
count_error++;
}
}
}
pct_use = count_use*1.0/(ROW*COL)*100;
pct_error = count_error*1.0/(ROW*COL)*100;
printf("柜子的使用率為%.2f%%, 故障率為%.2f%%", pct_use, pct_error);
return 0;
}
3.12網絡第2場 10:50-11:50
- 1.驗證密碼:給定一個密碼,用戶輸入字符串與密碼進行比較,完全一樣則輸出密碼正確,否則打印密碼錯誤。
#include <stdio.h>
#include <string.h>
#define MAX 100
int main(){
char pwd[MAX] = "correct@!Pwd", user_pwd[MAX];
int i = 0, len_userpwd;
printf("請輸入用戶密碼:");
gets(user_pwd);
len_userpwd = strlen(user_pwd);
while(user_pwd[i] != '\0'){
if(user_pwd[i] == pwd[i]){
i++;
}
else{
break;
}
}
if(i < len_userpwd){
printf("密碼錯誤!");
}
else{
printf("密碼正確");
}
return 0;
}
3.12網絡第3場 14:00-15:00
- 1.輸入一組正整數,直到輸入0停止。統計輸入數據的個數,并將這組數逆序輸出
#include <stdio.h>
#define MAX 1000
int main(){
int num, a[MAX], count = 0, i = 0;
printf("請輸入若干正整數:");
scanf("%d", &num);
while(num != 0){
if(num > 0){
a[i++] = num;
count++;
}
else{
printf("請輸入正整數!\n");
}
scanf("%d", &num);
}
printf("共輸入了%d個數\n", count);
for(i = count - 1; i >= 0; i--){
printf("%d ", a[i]);
}
return 0;
}
- 2.輸入一串長度大于1的字符串,長度是奇數就把中間的字符改成
*,長度為偶數就在中間插入一個*
#include <stdio.h>
#include <string.h>
#define MAX 1000
int main(){
char s[MAX];
int i, length;
printf("請輸入字符串(長度大于1):");
gets(s);
while(strlen(s) <= 1){
printf("長度不合格, 請重新輸入!\n");
gets(s);
}
length = strlen(s);
if(length%2==0){
for(i = length; i >= length/2; i--){
s[i+1] = s[i];
}
s[i+1] = '*';
length++;
}
else{
s[length/2] = '*';
}
printf("修改后的字符串值為:");
puts(s);
return 0;
}
// hellworld length = 9 mid = 4
// helloworldee length = 12 mid = 6