首页 > 代码库 > C和指针 第十六章 习题
C和指针 第十六章 习题
16.8 计算平均年龄
#include <stdlib.h>#include <stdio.h>#define MAX_LEN 512int main(){ int age; int totalAge; float avgAge; int peopleNum; FILE *file; char info[MAX_LEN]; char *infoPtr; file = fopen("D:/family.txt", "r"); //按行读取文件 while(fgets(info, MAX_LEN, file)){ infoPtr = info; peopleNum = 0; totalAge = 0; //strtol转换字符到数字 while((age = strtol(infoPtr, &infoPtr, 10)) > 0){ totalAge += age; peopleNum++; } //类型转换为float,然后计算平均年龄 avgAge = (float)totalAge / peopleNum; printf("%savg: %5.2f\n", info, avgAge); } return 0;}
运行:
16.9 计算相同生日概率
#include <stdlib.h>#include <stdio.h>#include <time.h>//比较元素int compare(void const *birth1, void const *birth2){ return *(int *)(birth1) - *(int*)(birth2);}//打印数组void print_arr(int *array, int len){ int idx = 0; while(idx <= len){ printf("%d ", array[idx]); idx++; }}//数组中是否有两个相同数int count_same(int *array, int len){ int same = 0; while(len > 0){ if(array[len] == array[len - 1]){ return 1; } len--; } return 0;}int main(){ int times = 0; int randBirthday[30]; int peopleCount; int sameCount = 0; srand((unsigned int)time(0)); while(times < 100000){ peopleCount = 29; while(peopleCount >= 0){ randBirthday[peopleCount] = rand() % 365; peopleCount--; } qsort(randBirthday, 30, sizeof(int), compare); sameCount += count_same(randBirthday, 29); times++; } printf("%f", (float)(sameCount) / 100000); return 0;}
运行:
16.10 插入排序
C和指针 第十六章 习题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。