C語(yǔ)言編程題

1灶挟、定義一個(gè)函數(shù),任意傳遞三個(gè)整數(shù)類型的值毒租,返回這三個(gè)值的和稚铣、差、平均值墅垮。

int demo(int v1, int v2, int v3, int *p1, int *p2);
int main(int argc, const char * argv[]) {
    // 要求定義一個(gè)函數(shù), 傳遞三個(gè)值, 返回這三個(gè)值得和,差,平局值
    int a = 10;
    int b = 20;
    int c = 30;
//    int res =  demo(a , b , c);
//    printf("res = %i\n", res);
    
    // 定義三個(gè)變量用于保存計(jì)算結(jié)果
    int res1 = 0; // 和
    int res2 = 0; // 差
//    int res3 = 0; // 平局值
    
    // *p1 == res1 *p2 == res2
    // 我們想要的就是調(diào)用完函數(shù)之后, 和差平均值對(duì)應(yīng)的變量都被"修改"為對(duì)應(yīng)的值
   int res3 = demo(a, b, c, &res1, &res2);
    
    printf("和 = %i, 差 = %i, 平均值 = %i\n", res1, res2, res3);
    
    return 0;
}

int demo(int v1, int v2, int v3, int *p1, int *p2)
{
    int sum = v1 + v2 + v3;
    *p1 = sum;
    int m = v1 - v2 - v3;
    *p2 = m;
    int average = sum / 3;
    
    return average;
    
    /*
    // 因?yàn)榉祷氐氖且粋€(gè)逗號(hào)表達(dá)式, 而逗號(hào)表達(dá)式的值是最后一個(gè)表達(dá)式的值, 所有返回的是average
//    return sum, m, average;
    */
    
    /*
    // return 連個(gè)作用 1.返回值給調(diào)用者 2.結(jié)束函數(shù)
    // 注意點(diǎn): return后面不可以寫任何語(yǔ)句, 因?yàn)閳?zhí)行不到
    return sum;
    printf("--------------\n");
    return m;
    return average;
     */
}

2惕医、 編寫一個(gè)函數(shù)char_contains(char str[],char key), 如果字符串str中包含字符key則返回?cái)?shù)值1算色,否則返回?cái)?shù)值0抬伺。

#include <stdio.h>
#include <math.h>
int char_contains(char str[], int length,char key);
int char_contains2(char str[],char key);
int main(int argc, const char * argv[]) {
    // 編寫一個(gè)函數(shù)char_contains(char str[],char key), 如果字符串str中包含字符key則返回?cái)?shù)值1灾梦,否則返回?cái)?shù)值0
    // 給你一個(gè)字符串和一個(gè)key, 要求從字符串中找出key, 如果找到就返回1沒(méi)有找到就返回0
    char str[] = "xiaomage";
    char key = 'z';
    int length = sizeof(str) / sizeof(str[0]);
   int res = char_contains(str, length, key);
//    int res = char_contains2(str, key);
    printf("res = %i\n", res);
    return 0;
}
int char_contains2(char str[],char key)
{
    /*
     xiaomage  a
     x != a  x != \0
     i != a  i != \0
     a != a
     
     xia  z
     x != z x != \0
     i != z i != \0
     a != z a != \0
     \0 != z \0!=\0
     */
    /*
     // 1.定義一個(gè)變量記錄當(dāng)前的索引
     //    int index = 0;
     // 2.遍歷數(shù)組, 取出當(dāng)前的字符判斷是否不等于key, 并且當(dāng)前出去的字符不是\0
    while (str[index] != key && str[index] != '\0') {
        index++;
    }
     */
    int index = -1;
    while (str[++index] != key && str[index] != '\0');
    
    //          a != '\0'
    //          \0 != \0
//    int res = str[index] != '\0' ? 1 : 0;
//    return  res;
    return str[index] != '\0' ? 1 : 0;
}
int char_contains(char str[], int length,char key)
{
    for (int i = 0; i < length; i++) {
        if (str[i] == key) {
            return 1;
        }
    }
    return 0;    
}

3峡钓、編程實(shí)現(xiàn)從鍵盤輸入3個(gè)0至9的數(shù)字,然后輸出0至9中哪些數(shù)字沒(méi)有出現(xiàn)過(guò)若河。

#include <stdio.h>

int main(int argc, const char * argv[]) {
    // 從鍵盤輸入3個(gè)0~9的數(shù)字,然后輸出0~9中哪些數(shù)字沒(méi)有出現(xiàn)過(guò)
    // 從鍵盤輸入100個(gè)0~2000的數(shù)字,然后輸出0~2000中哪些數(shù)字沒(méi)有出現(xiàn)過(guò)
    /*
     輸入: 1, 3 ,5
     輸出: 0, 2, 4, , 6, 7, 8, 9
     */
    /*
    // 1.接收用戶輸入的數(shù)據(jù)
    int num1, num2, num3;
    printf("輸入三個(gè)整數(shù), 用逗號(hào)隔開(kāi)\n");
    scanf("%i,%i,%i", &num1, &num2, &num3);
    
    // 2.遍歷打印0~9
    for (int i = 0; i <= 9; i++) {
        // 3.判斷當(dāng)前打印的值是否是用戶輸入的值, 如果是就不打印
        if (num1 != i &&
            num2 != i &&
            num3 != i) {
            
            printf("%i\n", i);
        }
    }
     */
    
    // 空間換時(shí)間
    // 1.定義數(shù)組保存所有用戶輸入的數(shù)
    int nums[10] = {0};
    // 2.接收用戶輸入的數(shù)據(jù)
    int value = -1;
    for (int i = 0; i < 3; i++) {
        printf("請(qǐng)輸入%i個(gè)整數(shù)\n", i+1);
        scanf("%i", &value);
        nums[value] = 1;
    }
    
    for (int i = 0; i < 10; i++) {
//        printf("nums[%i] = %i\n", i , nums[i]);
        if (nums[i] != 1) {
            printf("%i\n", i);
        }
    } 
    return 0;
}

4能岩、已知一個(gè)無(wú)序的數(shù)組, 里面有5個(gè)元素, 要求寫一個(gè)函數(shù)對(duì)數(shù)組進(jìn)行排序 int nums[8] = {99, 12, 88, 34, 5, 44, 12, 100};

#include <stdio.h>

void selectSort(int nums[], int length);
void printArray(int nums[], int length);
//void swap(int v1, int v2);
void swap(int nums[], int i, int j);
void bubbleSort(int nums[], int length);

int main(int argc, const char * argv[])
{
    // 已知一個(gè)無(wú)序的數(shù)組, 里面有5個(gè)元素, 要求對(duì)數(shù)組進(jìn)行排序
    int nums[8] = {99, 12, 88, 34, 5, 44, 12, 100};
    int length = sizeof(nums) / sizeof(nums[0]);
    
    printArray(nums, length);
//    selectSort(nums, length);
    bubbleSort(nums, length);
    
    printf("----------------\n");
    printArray(nums, length);

    return 0;
}

// 遍歷數(shù)組
void printArray(int nums[], int length)
{
    for (int i = 0; i < length; i++) {
        printf("nums[%i] = %i\n", i, nums[i]);
    }
}

void bubbleSort(int nums[], int length)
{
    for (int i = 0; i < length - 1; i++) {
        for (int j = 0; j < length - 1 - i; j++) {
            if (nums[j] > nums[j + 1]) {
                swap(nums, j, j+1);
            }
        }
    }
}

// 選擇排序
void selectSort(int nums[], int length)
{
    for (int i = 0; i < length - 1; i++) {
        for (int j = i+1; j < length; j++) {
            if (nums[i] > nums[j]) {
                /*
                int temp = nums[i];
                nums[i] = nums[j];
                nums[j] = temp;
                 */
//                swap(nums[i], nums[j]);
                swap(nums, i, j);
            }
        }
    }

}

// 基本數(shù)據(jù)類型作為函數(shù)的參數(shù), 是值傳遞, 在函數(shù)中修改形參不會(huì)影響實(shí)參的值
/*
void swap(int v1, int v2)
{
    int temp = v1;
    v1 = v2;
    v2 = temp;
}
 */
// 交換兩個(gè)數(shù)的值
void swap(int nums[], int i, int j)
{
    int temp = nums[i];
    nums[i] = nums[j];
    nums[j] = temp;
}

5、 寫一個(gè)函數(shù)萧福,對(duì)傳遞任意兩個(gè)整型類型的數(shù)據(jù)進(jìn)行值的交換拉鹃。

6、 構(gòu)造一個(gè)函數(shù)鲫忍,任意輸入一個(gè)字符串毛俏,判斷字符串里面每個(gè)字符出現(xiàn)的次數(shù)。

#include <stdio.h>
#include <string.h>
int main(int argc, const char * argv[]) {
    
    int count[128] = {0};
    char string[200];
    int i;
    printf("請(qǐng)輸入一串字符串:");
    //scanf("%s",string);
    gets(string);//這個(gè)函數(shù)有安全隱患warning: this program uses //gets(), which is unsafe.
    for (i = 0; string[i] != '\0'; i++) {
        count[string[i]]++;
    }
    for (i = 0; i < 128; i++) {
        if (count[i] != 0) {
            printf("字符%c出現(xiàn)的次數(shù):%d\n",i,count[i]);
        }
    }
    return 0;
}

7饲窿、求1+2!+3!+...+20!的和并返回輸出煌寇。

#include <stdio.h>
#include <string.h>
int main(int argc, const char * argv[]) {
    
    float n,s=0,t=1;
    for(n=1;n<=20;n++)
    {
        t*=n;
        s+=t;
    }
    printf("1+2!+3!...+20!=%e\n",s);
    return 0;
}

8、 編寫一個(gè)函數(shù)有5個(gè)人坐在一起逾雄,問(wèn)第五個(gè)人多少歲阀溶?他說(shuō)比第4個(gè)人大2歲腻脏。問(wèn)第4個(gè)人歲數(shù),他說(shuō)比第3個(gè)人大2歲银锻。問(wèn)第三個(gè)人永品,又說(shuō)比第2人大兩歲。問(wèn)第2個(gè)人击纬,說(shuō)比第一個(gè)人大兩歲鼎姐。最后問(wèn)第一個(gè)人,他說(shuō)是10歲更振。請(qǐng)問(wèn)第五個(gè)人多大炕桨?

#include <stdio.h>
#include <string.h>
int age(int n){
    //逆向思維,遞歸函數(shù)
    int c;
    if(n==1) c=10;
    else c=age(n-1)+2;
    return c;
}
int main(int argc, const char * argv[]) {
    
    printf("第五個(gè)人的年齡是:%d歲\n",age(5));
    return 0;
}

9肯腕、 有n個(gè)人圍成一圈献宫,順序排號(hào)。從第一個(gè)人開(kāi)始報(bào)數(shù)(從1到3報(bào)數(shù))实撒,凡報(bào)到3的人退出圈子姊途,問(wèn)最后留下的是原來(lái)第幾號(hào)的那位。

#include <stdio.h>
#define nmax 50
int main(int argc, const char * argv[]) {
    
    int i,k,m,n,num[nmax],*p;
    printf("請(qǐng)輸入游戲共計(jì)多少成員:");
    scanf("%d",&n);
    p=num;
    for(i=0;i<n;i++)
        *(p+i)=i+1;
    i=0;
    k=0;
    m=0;
    while(m<n-1){
        if(*(p+i)!=0) k++;
        if(k==3){
            *(p+i)=0;
            k=0;
            m++;
        }
        i++;
        if(i==n) i=0;
    }
    while(*p==0) p++;
    printf("最后剩下的是%d號(hào)位\n",*p);
    return 0;
}

10知态、 寫一個(gè)函數(shù)捷兰,求一個(gè)字符串的長(zhǎng)度,在main函數(shù)中輸入字符串负敏,并輸出其長(zhǎng)度寂殉。(不準(zhǔn)使用系統(tǒng)的strlen函數(shù))。

#include <stdio.h>
int strLenth(char *p)
{
    int n;
    n=0;
    while(*p!='\0')
    {
        n++;
        p++;
    }
    return n;
}
int main(int argc, const char * argv[]) {
    
    int len;
    char str[20];
    printf("請(qǐng)輸入字符串\n");
    scanf("%s",str);
    len=strLenth(str);
    printf("你輸入的字符串長(zhǎng)度為 %d",len);
    return 0;
}

11原在、 計(jì)算字符串中子串出現(xiàn)的次數(shù)。

#include <stdio.h>
int main(int argc, const char * argv[]) {
    char str1[20],str2[20],*p1,*p2;
    int sum=0;
    printf("請(qǐng)輸入兩個(gè)字符串:");
    scanf("%s%s",str1,str2);
    p1=str1;p2=str2;
    while(*p1!='\0')
    {
        if(*p1 == *p2){
            while(*p1 == *p2 && *p2 != '\0'){
                p1++;
                p2++;
            }
        }
        else
            p1++;
        if(*p2=='\0')
            sum++;
        p2=str2;
    }
    printf("s2在s1中一共出現(xiàn)了%d次",sum);
    return 0;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末彤叉,一起剝皮案震驚了整個(gè)濱河市庶柿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌秽浇,老刑警劉巖浮庐,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異柬焕,居然都是意外死亡审残,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門斑举,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)搅轿,“玉大人,你說(shuō)我怎么就攤上這事富玷¤捣兀” “怎么了既穆?”我有些...
    開(kāi)封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)雀鹃。 經(jīng)常有香客問(wèn)我幻工,道長(zhǎng),這世上最難降的妖魔是什么黎茎? 我笑而不...
    開(kāi)封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任囊颅,我火速辦了婚禮,結(jié)果婚禮上傅瞻,老公的妹妹穿的比我還像新娘踢代。我一直安慰自己,他們只是感情好俭正,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布奸鬓。 她就那樣靜靜地躺著,像睡著了一般掸读。 火紅的嫁衣襯著肌膚如雪串远。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天儿惫,我揣著相機(jī)與錄音澡罚,去河邊找鬼。 笑死肾请,一個(gè)胖子當(dāng)著我的面吹牛留搔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播铛铁,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼隔显,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了饵逐?” 一聲冷哼從身側(cè)響起括眠,我...
    開(kāi)封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎倍权,沒(méi)想到半個(gè)月后掷豺,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡薄声,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年当船,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片默辨。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡德频,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缩幸,到底是詐尸還是另有隱情抱婉,我是刑警寧澤档叔,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站蒸绩,受9級(jí)特大地震影響衙四,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜患亿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一传蹈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧步藕,春花似錦惦界、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至雾消,卻和暖如春灾搏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背立润。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工狂窑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人桑腮。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓泉哈,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親破讨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子丛晦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容