1.喝汽水
1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水(编程实现)。
int main()
{
int n = 0;
scanf("%d", &n);
int tmp = n;
int a= 0;
int b = 0;
int sum = n;
while(tmp/2)
{
a = tmp / 2;
b = tmp % 2;
tmp = a + b;
sum = sum+a;
}
printf("你可以买%d瓶饮料", sum);
return 0;
}
//喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水(编程实现)。
//
int main()
{
int money = 0;
int total = 0;
int empty = 0;
scanf("%d", &money);//20
//total += money;//买
//empty = money;
置换
//while (empty >= 2)
//{
// total += (empty / 2);
// empty = empty / 2 + empty%2;
//}
//规律:
if(money > 0)
total = 2 * money - 1;
printf("%d\n", total);
return 0;
}
2.第一行包含一个整数n,表示一个方阵包含n行n列,用空格分隔。 (1≤n≤10)
从2到n+1行,每行输入n个整数(范围-231~231-1),用空格分隔,共输入n*n个数。
3.
struct student
{
int num;
char name[32];
float score;
} stu;
//stu 是结构体变量的
typedef struct Student
{
int num;
char name[32];
float score;
} Stu;
//Stu 是类型
int main()
{
Stu s1;
return 0;
}
4.
int* arr[10];//指针数组
int (*arr)[10];//数组指针
5.上三角矩阵的判定
输入描述:
第一行包含一个整数n,表示一个方阵包含n行n列,用空格分隔。 (1≤n≤10)
从2到n+1行,每行输入n个整数(范围-231~231-1),用空格分隔,共输入n*n个数。
输出描述:
一行,如果输入方阵是上三角矩阵输出"YES"并换行,否则输出"NO"并换行。
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
//int arr[n][n];//C99 变长数组
int arr[10][10];//vc不能上述
int i = 0;
//输入
for (i = 0; i < n; i++)
{
int j = 0;
for (j = 0; j < n; j++)
{
scanf("%d", &arr[i][j]);
}
}
//判断,下三角都为0,此时i>j
int flag = 1;//默认是上三角矩阵
for (i = 0; i < n; i++)
{
int j = 0;
for (j = 0; j < i; j++)
{
if (arr[i][j] != 0)
{
flag = 0;
goto end;//跳出循环的另一种形式
}
}
}
end:
if (flag == 1)
printf("YES\n");
else
printf("NO\n");
return 0;
}
6.矩阵判断
输入描述:
第一行包含两个整数n和m,表示两个矩阵包含n行m列,用空格分隔。
从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示第一个矩阵中的元素。
从n+2行到2n+1,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示第二个矩阵中的元素。------1 < n,m < 10
输出描述:
一行,如果两个矩阵相等输出"Yes"并换行,否则输出"No"并换行。
#include <stdio.h>
int main()
{
int n = 0;
int m = 0;
scanf("%d %d", &n, &m);
//int arr1[10][10];
//int arr2[10][10];
int arr1[n][m];//c99版本
int arr2[n][m];
//输入数据
//第一个数组
int i = 0;
int j = 0;
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
scanf("%d", &arr1[i][j]);
}
}
//第二个数组
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
scanf("%d", &arr2[i][j]);
}
}
//比较
int flag = 1;//默认2个矩阵相等
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
if (arr1[i][j] != arr2[i][j])
{
flag = 0;
goto end;
}
}
}
end:
if (flag == 1)
printf("Yes\n");
else
printf("No\n");
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#define n 3
#define m 3
#include<stdio.h>
int main()
{
//int n = 0;
//int m = 0;
//scanf("%d %d", &n, &m);
int i = 0;
int j = 0;
int flag = 0;
int arr1[n][m];
int arr2[n][m];
//读入arr1
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
scanf("%d", &arr1[i][j]);
}
}
//读入arr2
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
scanf("%d", &arr2[i][j]);
}
}
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
if (arr1[i][j] != arr2[i][j])
{
flag = 1;
goto end;
}
}
}
//break只能跳一个循环
end:
if (flag == 0)
printf("Yes");
else
printf("No");
return 0;
}
7.调整奇数偶数顺序
前面找偶数,后面找奇数
//注意防止越界
//输入一个整数数组,实现一个函数,
//来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,
//所有偶数位于数组的后半部分。
void move(int arr[], int sz)
{
int left = 0;
int right = sz - 1;
while (left<right)
{
//找偶数的过程
while ((left<right) && (arr[left] % 2 == 1))
{
left++;
}
//找奇数的过程
while ((left < right) && (arr[right] % 2 == 0))
{
right--;
}
if (left < right)
{
int tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
left++;
right--;
}
}
}
int main()
{
int arr[10] = { 0 };
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
//输入
for (i = 0; i < sz; i++)
{
scanf("%d", &arr[i]);
}
//调整
move(arr, sz);
//输出
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
8.两个有序数组的合并
//有序数组的合并
//有序数组1和有序数组2比较
//有序数组1[0]小于有序数组[0],将有序数组1[0]放入数组3,后有序数组1[1]和0比较
#include<stdio.h>
int main()
{
// int m = 0;
// int n = 0;
/*scanf("%d %d",&n,&m)*/
int arr1[n];
int arr2[m];
int arr[m + n];
int k = 0;
int i = 0;
int j = 0;
//输入arr1数组
for (i = 0; i < n; i++)
{
scanf("%d", &arr1[i]);
}
for (j = 0; j < m; j++)
{
scanf("%d", &arr2[j]);
}
//比较
i = 0;
j = 0;
while (i < n && j < m)
{
if (arr1[i] < arr2[j])
{
arr[k] = arr1[i];
i++;
k++;
}
else
{
arr[k] = arr2[j];
j++;
k++;
}
}
//如果n,m数目不同,则比较后,必定会剩下一部分
if (i == n)
{
//把arr2中剩余的元素放在arr3中
//1 2 3
//1 3 4 5
//1 1 2 3 3(4 5)
while (j < m)
{
arr[k] = arr2[j];
j++;
k++;
}
}
else
{
//把arr1中剩余的元素放在arr3中
//1 2 3
//1 3 4 5
//1 1 2 3 3(4 5)
while (i < n)
{
arr[k] = arr1[i];
i++;
k++;
}
}
for(k=0;k<n+m;k++)
{
printf("%d ", arr[k]);
}
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#define n 3
#define m 3
#include<stdio.h>
int main()
{
int arr1[m];
int arr2[n];
int arr3[n + m];
int i = 0;
int j = 0;
int k = 0;
for (i = 0; i < 3; i++)
{
scanf("%d", &arr1[i]);
}
for (j = 0; j < 3; j++)
{
scanf("%d", &arr2[j]);
}
i = 0;
j = 0;
while (i < n && j < m)
{
if (arr1[i] < arr2[j])
{
arr3[k] = arr1[i];
k++;
i++;
}
else
{
arr3[k] = arr2[j];
k++;
j++;
}
}
//肯定有一部分是用尽了
//如果n,m数目不同,则比较后,必定会剩下一部分
//1 2 3--i
//1 3 /5 6 8--j
//1 1 2 3 3 /5 6 8
if (i == n)
{
while (j < m)
{
arr3[k] = arr2[j];
j++;
k++;
}
}
else
{
while (i < n)
{
arr3[k] = arr1[i];
i++;
k++;
}
}
for (i = 0; i < m + n; i++)
{
printf("%d ", arr3[i]);
}
return 0;
}