1. 求两数的最大公约数
(解法一:暴力求法)
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int min = (a < b) ? a : b;
int m = min;
while (1)
{
if (a % m == 0 && b % m == 0)
{
break;
}
m--;
}
printf("%dn", m);
return 0;
}
(解法二:辗转相除法)
例如有数24和18求最大公约数 ,令a=24,b=18;a%b=6,令c=6;再让a=18,b=6;a%b=0,c=0;此时6为24和18的最大公约数。
int main()
{
int a = 0;
int b = 0;
int c = 0;
scanf("%d %d", &a, &b);
while (c = a % b)
{
a = b;
b = c;
}
printf("%dn", b);
return 0;
}
2.计算1到100的所有整数中出现多少个数字9
注意:99出现了两个9.
int main()
{
int i = 0;
int count = 0;
for (i = 1;i <= 100;i++)
{
if (i % 10 == 9)
{
count++;
}
if (i % 10 == 9)
{
count++;
}
}
printf("count=%dn", count);
return 0;
}
3.求10个整数中的最大值
不能用二分查找法,因为不能保证数字有序
int main()
{
int arr[10] = { 0 };
int i = 0;
for (i = 0;i < 10;i++)
{
scanf("%d", &arr[i]);
}
int max = arr[0];
for (i = 1;i < 10;i++)
{
if (arr[i] > max)
{
max = arr[i];
}
}
printf("%dn", max);
return 0;
}
4.在屏幕上输出九九乘法表
int main()
{
int i = 0;
for (i = 1;i <= 9;i++)
{
int j = 0;
for (j = 1;j <=i;j++)
printf("%d*%d=%-2d ", i, j, i * j);
printf("n");
}
return 0;
}
注意:1.%2d右对齐,%-2d左对齐。
2.想让行距变宽一点可以将%-2d后的空格改为t
3.将i=9改为i=n可打印其他行数的乘法口诀表
打印效果如下:
5.二分查找法
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
int left = 0;
int right = sz - 1;
scanf("%d", &k);
while (left <= right)
{
int mid = (left + right) / 2;
if (arr[mid] < k)
{
left = mid + 1;
}
else if (arr[mid] > k)
{
right = mid - 1;
}
else
{
printf("找到了,下标是:%dn", mid);
break;
}
}
if (left > right)
printf("找不到n");
return 0;
}
注意:1.mid应该放在循环内部计算,因为每一次循环都要重新计算mid。
2.循环的条件是left<=right
另外,为了防止 left+right 超出数据范围,可以将 mid 的计算公式改为 mid=left +(right-left)/2.
6. 编写代码,演示多个字符从两端移动,向中间汇聚
#include#include int main() { char arr1[] = "welcome to China!!!"; char arr2[] = "###################"; int left = 0; int right = strlen(arr2) - 1; while (left <= right) { arr2[left] = arr1[left]; arr2[right] = arr1[right]; printf("%sn", arr2); Sleep(1000); system("cls"); left++; right--; } return 0; }
注意:1.使用Sleep函数可以使程序延缓打印下一条指令,要引用头文件 windows.h
2.system是一个库函数,可以执行系统命令,cls是清空屏幕,要引用头文件 stdlib.h
7.编写代码实现,模拟用户登录情景,并且只能登录三次。
问题描述:
只允许输入三次密码,如果密码正确,则提示登陆成功,如果三次均输入错误,则退出程序。
#includeint main() { int i = 0; char password[20] = { 0 }; for (i = 0;i < 3;i++) { printf("请输入密码:>"); scanf("%s", password); if (strcmp(password , "abcdef")==0) { printf("登陆成功n"); break; } else { printf("密码错误。"); } if (i == 3) { printf("三次密码均输入错误,退出程序。n"); } } return 0; }
注意:比较字符串是否相等不能用等号,而要用strcmp函数,要引用头文件string.h



