作业1:使用二维数组输出杨辉三角
//杨辉三角
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int i,j,n;
scanf("%d",&n);
int arr[n][n];
for(i=0;i<n;i++)
{
arr[i][0]=1;
arr[i][j]=1;
for(j=1;j<i;j++)
{
arr[i][j]=arr[i-1][j]+arr[i-1][j-1];
}
for(j=0;j<=i;j++)
{
printf("%d ",arr[i][j]);
}
putchar(10);
}
return 0;
}
作业2:通过键盘输入6名学生的成绩,输出6名学生的成绩,使用冒泡法对班级学生的成绩升序排序,输出排序后成绩
冒泡法:从小到大--只有你比我大就交换顺序
// 冒泡法
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int i,temp,j,max,m;
int arr[6];
int len;
len=sizeof(arr)/sizeof(arr[0]);
for(m=0;m<len;m++)
{
scanf("%d",&arr[m]);
}
for(i=0;i<len;i++)
{
for(j=0;j<len-i;j++)
{
max=arr[0];
if(arr[j+1]<=arr[j])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}for (i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
putchar(10);
return 0;
}
选择:找出最小值的位置,然后将位置的数据和第一个位置的数据进行交互,
//选择语句
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int i,j,n,temp,min;
printf("输入需要录入的成绩数量\n");
scanf("%d",&n);
int arr[n];
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
for(i=0;i<n;i++)
{
min=i;
for(j=i;j<n;j++)
{
if(arr[min]>=arr[j])
{
min=j;
}
}
if(min!=i)
{
temp=arr[min];
arr[min]=arr[i];
arr[i]=temp;
}
}
for(i=0;i<n;i++)
printf(" %d ",arr[i]);
printf("\n");
return 0;
}
作业3:有如下两个数组:int arr[] = {1,2,3,4,5,6,7,8,9,0}; int brr[] = {3,7,15,9,20,2,100, 4}; 要求,自定义一个数组crr,将上面两个数组的交集存放到新数组中,并输出新数组中的内容。(未完成)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int arr[] = {1,2,3,4,5,6,7,8,9,0};
int brr[] = {3,7,15,9,20,2,100,4};
int i,j,lena,lenb,count=0,m,max;
lena=sizeof(arr)/sizeof(arr[0]);
lenb=sizeof(brr)/sizeof(brr[0]);
max=lena>lenb?lena:lenb;
int flag=0;
int crr[max];
for(i=0;i<lena;i++)
{
for(j=0;j<lenb;j++)
{
if(arr[i]==brr[j])
{
count++;}
for(m=0;m<count;m++)
{
crr[m]=arr[i];
flag=1;
break;
}
}
}
for(m=0;m<count;m++)
{
printf("%d",crr[m]);
}
return 0;
}
作业4:定义一个双精度浮点型数组,存放十个学生成绩,输入十名学生成绩,输出赋值后的所有元素。使用选择排序,完成降序排序后输出,并求出平均分,并统计出大于平均分学生的比重,输出结果。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
double scores[10];
double sum = 0, average, greaterThanAverageCount = 0;
// 输入十名学生成绩
for (int i = 0; i < 10; i++) {
printf("请输入第%d名学生的成绩: ", i + 1);
scanf("%lf", &scores[i]);
sum += scores[i]; // 计算总分
}
// 输出赋值后的所有元素
printf("输入的成绩为: ");
for (int i = 0; i < 10; i++) {
printf("%.2lf ", scores[i]);
}
printf("\n");
// 使用选择排序完成降序排序
for (int i = 0; i < 9; i++) {
int maxIndex = i;
for (int j = i + 1; j < 10; j++) {
if (scores[j] > scores[maxIndex]) {
maxIndex = j;
}
}
if (maxIndex != i) {
double temp = scores[i];
scores[i] = scores[maxIndex];
scores[maxIndex] = temp;
}
}
// 输出降序排序后的成绩
printf("降序排序后的成绩为: ");
for (int i = 0; i < 10; i++) {
printf("%.2lf ", scores[i]);
}
printf("\n");
// 计算平均分
average = sum / 10;
printf("平均分为: %.2lf\n", average);
// 统计出大于平均分学生的比重
for (int i = 0; i < 10; i++) {
if (scores[i] > average) {
greaterThanAverageCount++;
}
}
double proportion = greaterThanAverageCount / 10;
printf("大于平均分学生的比重为: %.2lf\n", proportion);
return 0;
}
作业5:23031班有4个小组,每组有5名学生,C语言基础考试成绩,第一组5位同学的成绩为90、92、93、91、88,第二组5位同学的成绩为86、89、87、85、99,第三组5位同学的成绩为100,95,85,75,90,第四组5位同学的成绩为90,85,85,95,80,定义二维数组分别输入4个小组的成绩,利用循环再输出4个小组的学生成绩,求出每个小组的最低成绩,最高成绩并输出每个小组的最高成绩,最低成绩。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int scores[4][5] = {
{90, 92, 93, 91, 88},
{86, 89, 87, 85, 99},
{100, 95, 85, 75, 90},
{90, 85, 85, 95, 80}
};
int i, j, max, min;
printf("各小组学生成绩如下:\n");
for (i = 0; i < 4; i++) {
printf("第%d小组的成绩:", i + 1);
for (j = 0; j < 5; j++) {
printf("%d ", scores[i][j]);
}
printf("\n");
}
printf("各小组的最高成绩和最低成绩如下:\n");
for (i = 0; i < 4; i++) {
max = min = scores[i][0]; // 假设第一个成绩是最大和最小值
for (j = 1; j < 5; j++) {
if (scores[i][j] > max) {
max = scores[i][j]; // 更新最大值
}
if (scores[i][j] < min) {
min = scores[i][j]; // 更新最小值
}
}
printf("第%d小组:最高成绩为%d,最低成绩为%d\n", i + 1, max, min);
}
return 0;
}