旅游酒店網(wǎng)站建設三葉草gw9356
思維導圖
1> 提示并輸入一個字符串,統(tǒng)計該字符串中大寫字母、小寫字母、數(shù)字字符、空格字符的個數(shù)并輸出
2> 提示并輸入一個字符串,將該字符串中的所有字母挑選到一個新數(shù)組中,將所有的數(shù)字字符挑選到另一個新數(shù)組中。并且將數(shù)字字符對應的數(shù)組降序排序。輸出兩個數(shù)組的結果
3> 請用 C、JAVA、C# 任一種語言,對數(shù)組 {3, 2, 10, 1, 23, 15, 82} 進行由小到大的排序。(安在軟件)
4> 輸入一個字符串,將其逆序后輸出?(電工時代)
5> 一個長度為10的數(shù)組中重復數(shù)據(jù),現(xiàn)要求相同數(shù)據(jù)只保留一份,其他的用0來代替,被替換的數(shù)據(jù)移到數(shù)組末尾。(數(shù)組內(nèi)容自定) (富士安全,云尖軟件開發(fā))
6> 輸出一個 int 型數(shù)組中最小和第二小的數(shù)。(魯科安全)
7> 將作業(yè)連接上的 第二節(jié)數(shù)組部分的題目完成:5、7、8、10、13、18、20、22、23、26、27、28、29、30
0-C基礎知識 答案 · 華清遠見工作空間
第一題
#include <stdio.h>
#include <ctype.h>
//1> 提示并輸入一個字符串,統(tǒng)計該字符串中大寫字母、小寫字母、數(shù)字字符、空格字符的個數(shù)并輸出
int main(int argc, const char *argv[])
{char str[50];printf("請輸入一個字符串\n");gets(str);//讀取輸入的字符串int len = sizeof(str)/sizeof(str[0]);int Uppercase_letters = 0, lowercase_letters = 0, numeric_characters = 0,space_characters = 0;//大寫字母、小寫字母、數(shù)字字符、空格字符for(int i=0;i<len;i++){if(isupper(str[i]))//判斷給定字符是否為大寫字母{Uppercase_letters++;}if(islower(str[i]))//判斷給定字符是否為小寫字母{lowercase_letters++;}if(isdigit(str[i]))//判斷給定字符是否為數(shù)字字符{numeric_characters++;}if(isspace(str[i]))//判斷給定字符是否為空格字符{space_characters++;}}printf("大寫字母個數(shù)為:%d",Uppercase_letters);printf("小寫字母個數(shù)為:%d",lowercase_letters);printf("數(shù)字字符個數(shù)為:%d",numeric_characters);printf("空格字符個數(shù)為:%d",space_characters);return 0;
}ubuntu@ubuntu:student_C_2024_11_13$ gcc homework_after_class.c
homework_after_class.c: In function ‘main’:
homework_after_class.c:9:2: warning: implicit declaration of function ‘gets’; did you mean ‘fgets’? [-Wimplicit-function-declaration]gets(str);//讀取輸入的字符串^~~~fgets
/tmp/ccnIEUop.o:在函數(shù)‘main’中:
homework_after_class.c:(.text+0x37): 警告: the `gets' function is dangerous and should not be used.
ubuntu@ubuntu:student_C_2024_11_13$ ./a.out
請輸入一個字符串qaz123 QWERT qwertHGvff 123487
大寫字母個數(shù)為:11小寫字母個數(shù)為:12數(shù)字字符個數(shù)為:9空格字符個數(shù)為:8
第二題
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main(int argc, const char *argv[])
{//2> 提示并輸入一個字符串,將該字符串中的所有字母挑//選到一個新數(shù)組中,將所有的數(shù)字字符挑選到//另一個新數(shù)組中。并且將數(shù)字字符對應的數(shù)組//降序排序。輸出兩個數(shù)組的結果char str[50];//原數(shù)組char str1[20];//字母數(shù)組char str2[20];//數(shù)字數(shù)組printf("請輸入一個字符串\n");gets(str);//讀取輸入的字符串int len = strlen(str);int count1 = 0;//字母數(shù)組下標計數(shù)int count2 = 0;//數(shù)字數(shù)組下標計數(shù)for(int i=0;i<len;i++){if(isalpha(str[i]))//判斷給定字符是否為字母{str1[count1]=str[i];count1++;}else if(isdigit(str[i]))//判斷給定字符是否為數(shù)字字符{str2[count2]= str[i];count2++;}else{continue;}}//數(shù)字數(shù)組降序排列int len1 = strlen(str1);int len2 = strlen(str2);//數(shù)組長度for(int i=0;i<len1;i++){int arr = i;//目前對比值的下標int temp,flag = 0;//中間變量,標識變量for(int j=i;j<len2;j++){if(str2[arr]<str2[j])//比較{flag = 1;arr = j;}}if(flag !=0)//將大的排到前面{ temp = str2[arr];str2[arr] = str2[i];str2[i] = temp;}}//輸出兩個數(shù)組printf("字母是:");for(int i = 0;i<len1;i++){printf("%c ",str1[i]);}putchar(10);printf("數(shù)字是:");for(int i = 0;i<len2;i++){printf("%c ",str2[i]);}putchar(10);return 0;
}ubuntu@ubuntu:student_C_2024_11_13$ gcc homework_after_class.c
homework_after_class.c: In function ‘main’:
homework_after_class.c:57:2: warning: implicit declaration of function ‘gets’; did you mean ‘fgets’? [-Wimplicit-function-declaration]gets(str);//讀取輸入的字符串^~~~fgets
/tmp/ccwuB0g4.o:在函數(shù)‘main’中:
homework_after_class.c:(.text+0x40): 警告: the `gets' function is dangerous and should not be used.
ubuntu@ubuntu:student_C_2024_11_13$ ./a.out
請輸入一個字符串
cdgf gfv434rfdjg vfdjgvf234
字母是:c d g f g f v r f d j g v f d j g v f
數(shù)字是:4 4 4 3 3 2
第三題
#include <stdio.h>
#include <ctype.h>
#include <string.h>int main(int argc, const char *argv[])
{//3> 請用 C、JAVA、C# 任一種語言,//對數(shù)組 {3, 2, 10, 1, 23, 15, 82} 進行由小到大的排序。char arr[] = {3, 2, 10, 1, 23, 15, 82};int len = sizeof(arr)/sizeof(arr[0]);for(int i=0;i<len;i++){for(int j=0;j<len-1;j++){if(arr[j]>arr[j+1]){arr[j]=arr[j+1]+arr[j]; arr[j+1]=arr[j]-arr[j+1];arr[j]=arr[j]-arr[j+1];}}}for(int i=0;i<len;i++){printf("%d ",arr[i]);}return 0;
}ubuntu@ubuntu:student_C_2024_11_13$ gcc homework_after_class.c
ubuntu@ubuntu:student_C_2024_11_13$ ./a.out
1 2 3 10 15 23 82
第四題
#include <stdio.h>
#include <ctype.h>
#include <string.h>int main(int argc, const char *argv[])
{//4> 輸入一個字符串,將其逆序后輸出?char str[50]="";printf("輸入一個字符串\n");gets(str);int len = strlen(str);for(int i=0;i<len/2;i++){str[i] = str[len-i-1]+str[i];str[len-i-1] = str[i]-str[len-i-1];str[i] = str[i] - str[len-i-1];}puts(str);putchar(10);return 0;
}ubuntu@ubuntu:student_C_2024_11_13$ ./a.out
輸入一個字符串
cgdrthj12345
54321jhtrdgc
第五題
#include <stdio.h>
#include <ctype.h>
#include <string.h>int main(int argc, const char *argv[])
{//5> 一個長度為10的數(shù)組中重復數(shù)據(jù),//現(xiàn)要求相同數(shù)據(jù)只保留一份,其他的用0來代替,//被替換的數(shù)據(jù)移到數(shù)組末尾。(數(shù)組內(nèi)容自定)char str[10] = {78,23,78,95,94,20,20,98,54,54};int len = sizeof(str)/sizeof(str[0]);for(int i = 0;i<len;i++)//對數(shù)的遍歷次數(shù){int qa = str[i];for(int j = i+1;j<len;j++)//用幾個數(shù)和全部的數(shù)比對{if(qa == str[j])//判斷重復{str[j] = 0;//重復的數(shù)用0代替}}}for(int k=0;k<len-1;k++)//把0換到末尾{if(str[k] == 0){for(int j=k;j<len-1;j++){str[j] = str[j+1];}str[len] = str[k];}}printf("結果為:\n");for(int i = 0;i<len;i++){printf("%d ",str[i]);}putchar(10);return 0;
}ubuntu@ubuntu:student_C_2024_11_13$ ./a.out
結果為:
78 23 95 94 20 98 54 0 0 0
第六題
#include <stdio.h>
#include <ctype.h>
#include <string.h>
//6> 輸出一個 int 型數(shù)組中最小和第二小的數(shù)。
int main(int argc, const char *argv[])
{int arr[] = {45,56,23,78,1,89,23,56,45,95,12};int a = arr[0];//第一小int len = sizeof(arr)/sizeof(arr[0]);int b = arr[1];//第二小for(int i=0;i<len;i++)//找出第一小{if(arr[i]<=a){a = arr[i];}}for(int i=0;i<len;i++)//找出第二小{if(arr[i]<=b||arr[i]>=a){b = arr[i];}}printf("第一小%d ,第二小%d\n",a,b);return 0;
}
ubuntu@ubuntu:student_C_2024_11_13$ ./a.out
第一小1 ,第二小12
第七題
1.D
2. ? ? 9,2,3,4,5,6,7,8,1
? ? ? ? 9,8,3,4,5,6,7,2,1
? ? ? ? 9,8,7,4,5,6,3,2,1
? ? ? ? 9,8,7,6,5,4,3,2,1
6.D
9.C
11.B
12.A
14.D
15.C
16. ? 9,2,3,4,5,6,7,8,1
? ? ? ? 9,8,3,4,5,6,7,2,1
? ? ? ? 9,8,7,4,5,6,3,2,1
? ? ? ? 9,8,7,6,5,4,3,2,1
17.B
19. ? 10 ?10 ?8 ?10
21.D
24.A
25.a[j]
? ? ?a[j+1]
? ? ?k
?