新鄉(xiāng)河南網(wǎng)站建設(shè)頂尖文案
C語音經(jīng)典題型
- 1. 在屏幕上輸出9*9乘法口訣表
- 2. 求10 個(gè)整數(shù)中最大值
- 3. 計(jì)算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出結(jié)果
- 4. 編寫程序數(shù)一下 1到 100 的所有整數(shù)中出現(xiàn)多少個(gè)數(shù)字9
- 5. 能把函數(shù)處理結(jié)果的二個(gè)數(shù)據(jù)返回給主調(diào)函數(shù)
- 6. 實(shí)現(xiàn)一個(gè)函數(shù),打印乘法口訣表,口訣表的行數(shù)和列數(shù)自己指定
- 7. 編寫一個(gè)函數(shù)實(shí)現(xiàn)n的k次方,使用遞歸實(shí)現(xiàn)
- 8. 計(jì)算一個(gè)數(shù)的每位之和(遞歸實(shí)現(xiàn))
- 9. 字符串逆序(遞歸實(shí)現(xiàn))
- 10. 將數(shù)組A中的內(nèi)容和數(shù)組B中的內(nèi)容進(jìn)行交換。(數(shù)組一樣大)
- 11. 創(chuàng)建一個(gè)整形數(shù)組,完成對(duì)數(shù)組的操作
1. 在屏幕上輸出9*9乘法口訣表
//在屏幕上輸出9*9乘法口訣表
//1*1=1
//2*1=2 2*2=4
//3*1=3 3*2=6 3*3=9
//...
//
#include <stdio.h>
int main()
{int i = 0;for (i = 1; i <= 9; i++){//打印一行的數(shù)據(jù)int j = 0;for (j = 1; j <= i; j++){printf("%d*%d=%-3d ", i, j, i * j); //-3d向左對(duì)齊}printf("\n");}return 0;
}
2. 求10 個(gè)整數(shù)中最大值
#include <stdio.h>
//求10 個(gè)整數(shù)中最大值int main()
{int arr[] = { -1,-2,-3,-4,-5,-6,-7,-8,-9,-10 };// 0 1 ...int m = arr[0];int i = 0;for (i = 1; i < 10; i++){if (arr[i] > m)m = arr[i];}printf("%d\n", m);return 0;
}
注意:
不能將m定義為0,如果定義為零,只能滿足正數(shù)形式,并不能滿足負(fù)數(shù)。
3. 計(jì)算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出結(jié)果
#include <stdio.h>
//計(jì)算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出結(jié)果int main()
{int i = 0;float sum = 0.0;int flag = 1;for (i = 1; i <= 100; i++){sum += flag*1.0f/i;flag = -flag;}printf("%f\n", sum);return 0;
}
4. 編寫程序數(shù)一下 1到 100 的所有整數(shù)中出現(xiàn)多少個(gè)數(shù)字9
#include <stdio.h>
//編寫程序數(shù)一下 1到 100 的所有整數(shù)中出現(xiàn)多少個(gè)數(shù)字9int main()
{int i = 0;int count = 0;for (i = 1; i <= 100; i++){if (i % 10 == 9)count++;if (i / 10 == 9)//注意不是else if,否則結(jié)果會(huì)為19count++;}printf("%d\n", count);return 0;
}
注意: 個(gè)位和十位都要判斷有沒有數(shù)字9。
5. 能把函數(shù)處理結(jié)果的二個(gè)數(shù)據(jù)返回給主調(diào)函數(shù)
#include <stdio.h>
被調(diào)用的函數(shù)
void test(int arr[]) //形參用數(shù)組的形式
{arr[0] = 3;arr[1] = 5;
}//主調(diào)函數(shù)
int main()
{int arr[2];test(arr);printf("%d %d\n", arr[0], arr[1]);return 0;
}void test(int*p1, int*p2) //形參用二個(gè)指針
{*p1 = 3;*p2 = 5;
}//主調(diào)函數(shù)
int main()
{int x = 0; int y = 0;test(&x, &y);printf("%d %d\n", x,y);return 0;
}int x;
int y;void test() //用倆個(gè)全局變量
{x = 3;y = 5;
}//主調(diào)函數(shù)
int main()
{test();printf("%d %d\n", x, y);return 0;
}
注意: return 這二個(gè)數(shù)是不可取的。
6. 實(shí)現(xiàn)一個(gè)函數(shù),打印乘法口訣表,口訣表的行數(shù)和列數(shù)自己指定
#include <stdio.h>//實(shí)現(xiàn)一個(gè)函數(shù),打印乘法口訣表,口訣表的行數(shù)和列數(shù)自己指定
//如:輸入9,輸出9 * 9口訣表,輸出12,輸出12 * 12的乘法口訣表。//
//1*1=1
//2*1=2 2*2=4
//3*1=3 3*2=6 3*3=9
//
void print_table(int m)
{int i = 0;for (i = 1; i <= m; i++){//打印一行int j = 0;for (j = 1; j <= i; j++){printf("%-2d*%-2d=%-3d ", i, j, i * j);}printf("\n");}
}int main()
{int n = 0;scanf("%d", &n);//9 12 5//打印對(duì)應(yīng)的乘法口訣表print_table(n);return 0;
}
7. 編寫一個(gè)函數(shù)實(shí)現(xiàn)n的k次方,使用遞歸實(shí)現(xiàn)
圖解演示
代碼如下
#include <stdio.h>
double Pow(int n, int k)
{if (k > 0)return n * Pow(n, k - 1);else if (k == 0)return 1.0;elsereturn 1.0 / Pow(n, -k);
}int main()
{int n = 0;int k = 0;scanf("%d %d", &n, &k);printf("%lf\n", Pow(n, k));return 0;
}
8. 計(jì)算一個(gè)數(shù)的每位之和(遞歸實(shí)現(xiàn))
題目內(nèi)容:
寫一個(gè)遞歸函數(shù)DigitSum(n),輸入一個(gè)非負(fù)整數(shù),返回組成它的數(shù)字之和。
例如,調(diào)用DigitSum(1729),則應(yīng)該返回1+7+2+9,它的和是19
輸入:1729,輸出:19
思路
DigitSum(1729)
DigitSum(172) + 9
DigitSum(17) + 2 +9
DigitSum(1) + 7 + 2 + 9
#include <stdio.h>
int DigitSum(int n)
{if (n > 9)return DigitSum(n / 10) + n % 10;elsereturn n;
}int main()
{int n = 0;scanf("%d", &n);int ret = DigitSum(n);printf("%d\n", ret);return 0;
}
9. 字符串逆序(遞歸實(shí)現(xiàn))
題目內(nèi)容:
編寫一個(gè)函數(shù) reverse_string(char * string)(遞歸實(shí)現(xiàn))
實(shí)現(xiàn):將參數(shù)字符串中的字符反向排列,不是逆序打印。
要求:不能使用C函數(shù)庫中的字符串操作函數(shù)。
比如:
char arr[] = "abcdef"
逆序之后數(shù)組的內(nèi)容變成:fedcba
#include <stdio.h>
#include <string.h>int my_strlen(char* str) //模擬strlen的實(shí)現(xiàn)
{int count = 0;while (*str != '\0'){count++;str++;}return count;
}void reverse_string(char* str) //非遞歸的方法
{int left = 0;int right = my_strlen(str)-1;while (left<right){char tmp = *(str + left);*(str + left) = *(str + right);*(str + right) = tmp;left++;right--;}
}void reverse_string(char* str) //遞歸的方法
{int len = my_strlen(str);char tmp = *str;//1*str = *(str + len - 1);//2*(str + len - 1) = '\0';//3if(my_strlen(str+1)>=2)reverse_string(str+1);//4*(str + len - 1) = tmp;//5
}int main()
{//char arr[] = "abcdef";char arr[] = "abcdef";reverse_string(arr);printf("%s\n", arr);return 0;
}
10. 將數(shù)組A中的內(nèi)容和數(shù)組B中的內(nèi)容進(jìn)行交換。(數(shù)組一樣大)
#include<stdio.h>
int main()
{int arr1[5] = { 1,3,5,7,9 };int arr2[5] = { 2,4,6,8,0 };int i = 0;int sz = sizeof(arr1) / sizeof(arr1[0]);int tmp = 0;for (i = 0; i < sz; i++){tmp = arr1[i];arr1[i] = arr2[i];arr2[i] = tmp;}for (i = 0; i < sz; i++){printf("%d ", arr1[i]);}printf("\n");for (i = 0; i < sz; i++){printf("%d ", arr2[i]);}printf("\n");return 0;
}
11. 創(chuàng)建一個(gè)整形數(shù)組,完成對(duì)數(shù)組的操作
要求:
實(shí)現(xiàn)函數(shù)init() 初始化數(shù)組為全0
實(shí)現(xiàn)print() 打印數(shù)組的每個(gè)元素
實(shí)現(xiàn)reverse() 函數(shù)完成數(shù)組元素的逆置。
自己設(shè)計(jì)以上函數(shù)的參數(shù),返回值。
#include <stdio.h>
void init(int arr[], int sz)
{int i = 0;for (i = 0; i < sz; i++){arr[i] = 0;}
}void print(int arr[], int sz)
{int i = 0;for (i = 0; i < sz; i++){printf("%d ", arr[i]);}printf("\n");
}void reverse(int arr[], int sz)
{int left = 0;int right = sz - 1;while (left<right){int tmp = arr[left];arr[left] = arr[right];arr[right] = tmp;left++;right--;}
}
int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };int sz = sizeof(arr) / sizeof(arr[0]);print(arr, sz);reverse(arr, sz);print(arr, sz);init(arr, sz);print(arr, sz);return 0;
}
如果這份博客對(duì)大家有幫助,希望各位給恒川一個(gè)免費(fèi)的點(diǎn)贊作為鼓勵(lì),并評(píng)論收藏一下,謝謝大家!!!
制作不易,如果大家有什么疑問或給恒川的意見,歡迎評(píng)論區(qū)留言。