C语言小练习(6)-创新互联
目录
成都创新互联公司-专业网站定制、快速模板网站建设、高性价比洛隆网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式洛隆网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖洛隆地区。费用合理售后完善,10年实体公司更值得信赖。//完全平方数且其中两位数字两相等
//回文数
//求a+aa+aaa+aaaa+aaaaa+……的和,其中a是一个数字
//喝汽水问题
//上三角矩阵判断
//有序数列合并
//有序数列判断
//奇偶排序:奇在前,偶在后
//完全平方数且其中两位数字两相等
编写程序寻找既是完全平方数,又有两位数字相同的三位正整数,例如121、144等。要求统计满足该条件的整数个数,并从大到小打印这些整数。
#define _CRT_SECURE_NO_WARNINGS
#includeint main()
{
int num = 0;
for (num = 100; num<= 999; num++)
{
int i = 10;
while(i*i<=num)//先找到平方数,再看是不是有两个相等,可以提高效率
{
int bai = num / 100;
int ge = num % 10;
int shi = (num - 100 * bai - ge) / 10;//孩子在这里卡了好久呜呜呜,千万别忘了 /10 !!
if (num == i * i)
if(bai == shi || bai == ge || shi == ge)
{
printf("%d ", num);
}
i++;
}
}
return 0;
}
//回文数回文是指正反序文字相同,如,LeveL,若是则输出“Yes”,否则输出“No”
#define _CRT_SECURE_NO_WARNINGS
#includeint main()
{
char arr[10];
printf("请输入一个字符串:");
scanf("%s", arr);
int sz = sizeof(arr) / sizeof(arr[0]);
int left = 0;
int right = sz - 1;
int flag = 1;
for (left = 0, right = sz - 1; left<= right; left++, right--)
{
if (arr[left] != arr[right])//只要有一对不同,跳出循环
{
flag = 0;
break;
}
}
if (flag)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
return 0;
}
//求a+aa+aaa+aaaa+aaaaa+……的和,其中a是一个数字这题思路巨多,可以a*1+a*11+a*111+……,也可以从后往前加,每次 / 10,等等。
int main()
{
int n = 0;//总共几项
int a = 0;//a+aa+aaa+……
scanf("%d %d", &a, &n);
int sum = 0;//计算n项的和
int i = 0;
int k = 0;//k为其中一项
for (i = 0; i< n; i++)//循环计算每一项
{
k = k * 10 + a;
sum += k;
}
printf("%d\n", sum);
return 0;
}
//喝汽水问题喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以买多少汽水
其实由数学归纳法不难得出 total = empty * 2 - 1 ,不过这样这题就没有意义了,这里用点不一样的~
#define _CRT_SECURE_NO_WARNINGS
#includeint main()
{
int money = 0;//你有多少钱
int total = 0;//一共能买多少瓶
int empty = 0;//空瓶数量
scanf("%d", &money);
total = money;//一开始买了多少瓶
empty = money;//一开始喝完后空瓶的数量
//从这里开始漫漫环保路(省钱路)
while (empty >= 2)//只要空瓶剩两个以上就可兑换
{
total += (empty / 2);//空瓶能兑换的汽水
empty = empty / 2 + empty % 2;//前面是兑换后喝完的空瓶,后面是兑换前落单的空瓶
}
printf("%d\n", total);
return 0;
}
//上三角矩阵判断对角线以下元素均为0则是上三角矩阵,如:
1 2 3
0 4 5
0 0 6
#define _CRT_SECURE_NO_WARNINGS
#includeint main()
{
printf("请问想输入几行几列?:");
int n = 0;
scanf("%d", &n);
int arr[10][10];
printf("请输入矩阵:):\n");
int i = 0;
int j = 0;
//输入
for (i = 0; i< n; i++)
{
for (j = 0; j< n; j++)
{
scanf("%d", &arr[i][j]);
}
}
//判断
int flag = 1;//flag我们已经用了很多次了,这里就不赘述为什么了
for (i = 0; i< n; i++)
{
//观察可知满足条件的矩阵中对角线下 j 都小于 i
for (j = 0; j< i; j++)
{
if (arr[i][j] != 0)
{
flag = 0;
goto end;//break只能跳出一层循环,而goto end 想去哪就去哪
} //哦吼吼 ,新用法,有没有学到??
}
}
end://注意这里是冒号不是分号!!!
printf("是否为上三角矩阵?:");
if (flag)
{
printf("yes\n");
}
else
{
printf("no\n");
}
return 0;
}
//有序数列合并将两组有序数列合并
方法很多,可以直接现将两组数组存入新数组中再排序,不过这样原数组有序无序都不重要了,这里我们物尽其用,既然原数组已经有序,就可以边比较边排列
#define _CRT_SECURE_NO_WARNINGS
#includeint main()
{
int arr1[10];
int arr2[10];
int arr3[20];//数组3元素是前两数组元素之和
int m = 0;
int n = 0;
printf("数组1和数组2分别有几个元素?:");
scanf("%d%d", &m, &n);
int i = 0;
int j = 0;
int k = 0;
//输入
printf("请输入第一个数组:");
for (i = 0; i< m; i++)
{
scanf("%d", &arr1[i]);
}
printf("请输入第二个数组:");
for (i = 0; i< n; i++)
{
scanf("%d", &arr2[i]);
}
//边比较边合并
i = 0;//这一步千万不能少!!!
while (i< m && j< n)//前提条件:数组访问不会越界
{
if (arr1[i]< arr2[j])
{
arr3[k] = arr1[i];
i++;
k++;
}
else
{
arr3[k] = arr2[j];
j++;
k++;
}
}
if (i == m)//arr1先访问完
{
//把arr2中剩余元素放在arr3中
while (j< n)
{
arr3[k] = arr2[j];
j++;
k++;
}
}
else//arr2先访问完
{
//把arr1中剩余元素放在arr3中
while (i< m)
{
arr3[k] = arr1[i];
i++;
k++;
}
}
//打印
for (k = 0; k< m + n; k++)
{
printf("%d ", arr3[k]);
}
return 0;
}
//有序数列判断判断一组数是否有序,相同也算有序
#define _CRT_SECURE_NO_WARNINGS
#includeint main()
{
int n = 0;
scanf("%d", &n);
int arr[10];
int i = 0;
//还是用flag,我愿称之为flag万能法
int flag1 = 0;//标记升序
int flag2 = 0;//标记降序
for (i = 0; i< n; i++)
{
scanf("%d", &arr[i]);
if (i >0)//从第二个数开始就可以和第一个数比较了
{
//如果一直升序:flag1=1,flag2=0
if (arr[i - 1]< arr[i])
{
flag1 = 1;
}
//如果一直降序:flag1=0,flag2=1
else if (arr[i - 1] >arr[i])
{
flag2 = 1;
}
}
}
if (flag1 + flag2< 2)//即等于0或等于1
printf("sorted\n");
else
printf("unsorted\n");
return 0;
}
//奇偶排序:奇在前,偶在后将一组数组中奇数放在前面,偶数放在后面
不强调新数组奇偶数有序
#define _CRT_SECURE_NO_WARNINGS
#includevoid 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 };
printf("请输入十个整数:");
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;
}
j
好长时间没有更新小练习了,这七道题中有些题有一点点小难度,一起加油吧!!
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
新闻名称:C语言小练习(6)-创新互联
转载注明:http://hbruida.cn/article/pcsip.html