内容:有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。
#include
//杨氏矩阵
//1 2 3
//4 5 6
//7 8 9
int main(char* argc,int argv[])
{
int arr[3][3] = {1,2,3,4,5,6,7,8,9};
int k = 0, x = 2, y = 0, flag=0;
scanf("%d",&k);
while (x>=0&&y<=2)
{
if (arr[x][y]>k)
{
x--;
}
else if(arr[x][y]
y++;
}
else
{
printf("找到了,下标是:%d %d\n",x,y);
flag = 1;
break;
}
}
if (flag==0)
{
printf("找不到\n");
}
return 0;
}
内容:
*
***
*****
*******
*********
***********
*************
***********
*********
*******
*****
***
*
#include
int main()
{
int line = 0;
scanf("%d",&line);
int i = 0,sum=0;
for (i=0;i<=line;i++)
{
int j = 0;
for (j=0;j
printf(" ");
}
for (j = 0; j <2*i-1 ; j++)
{
printf("*");
}
sum = j;
printf("\n");
}
for (i=0;i
int j = 0;
for (j=0;j {
printf(" ");
}
for (j = 0; j < 2*(line-1-i)-1; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
内容:如果在一个固定的进制中,一个n位自然数等于自身各个数位上数字的n次幂之和,则称此数为自幂数。
for (int i = 0; i <= 100000; i++)
{
//1.判断i是否是自幂数
int n = 1;
int tmp = i;
while (tmp/=10)
{
n++;
}
//2.求每一位n次方之和
tmp = i;
int sum = 0;
while (tmp)
{
sum+=pow(tmp % 10,n);
tmp /= 10;
}
//3.判断
if (sum==i)
{
printf("%d\n",i);
}
}
内容:求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个随机正整数。 2+22+222+2222+22222
int a = 0;
int n = 0;
scanf("%d %d",&a,&n);
int i = 0;
int sum = 0;
int k = 0;
for (i=0;i
k = k * 10 + a;
sum += k;
}
printf("%d\n",sum);
内容:喝汽水,1瓶汽水1元,2个空瓶换一瓶汽水,给20元,可以喝多少汽水(编程实现)
int money = 0;
int total = 0;
int empty = 0;
scanf("%d",&money);
total += money;
empty += money;
// 空 换回饮料 剩余空瓶
//20 10 0
// 10 5 0
// 5 2 1
// 3 1 1
// 1 0 0
while (empty>=2)
{
total = total + empty / 2;
empty = empty/2+empty % 2;
printf("%d\n",empty);
}
printf("%d", total);
内容:调整数组中数字的顺序使得数组中所有奇数位于数组的前半段,偶数位于数组的后半段
int arr[] = {1,2,3,4,5,6,7,8,9};
int sz = sizeof(arr) / sizeof(arr[0]);
int l = 0;
int r = sz - 1;
while(l
//从前向后找一个偶数
while (l
l++;
}
//从后向前找一个奇数
while (l
r--;
}
if(l
int temp;
temp = arr[l];
arr[l] = arr[r];
arr[r] = temp;
}
}
for (int i=0;i
printf("%d\n", arr[i]);
}
内容:实现一个函数,可以左旋字符串中的k个字符
//abcdef 左旋1个字符bcdefa
// 左旋2个字符cdefab
// 左旋3个字符defabc
//方法一:中转站思想
void left_move(char* str,int k)
{
assert(str);
for (k; k>0; k--)
{
char tmp = *str;//a
int len = strlen(str);
int i = 0;
for (i = 0; i < len - 1; i++)
{
*(str + i) = *(str + i + 1);//str=bcdef
}
*(str + len - 1) = tmp;//尾部=a
}
}
int main(char* argc,int argv[])
{
char arr[] = "abcdef";
int k = 0;
scanf("%d",&k);
left_move(arr,k);
printf("%s\n",arr);
return 0;
}
//方法二:左边(左旋字符串)逆序,右边(保持原位字符串)逆序,整体逆序
void reverse(char* left, char * right)
{
assert(left&&right);
while (left < right) {
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
void move(char* str, int k)
{
int len = strlen(str);
k %= len;//当K超过字符串长度时
//左边逆序
reverse(str, str + k - 1);
//右边逆序
reverse(str + k, str + len - 1);
//整体逆序
reverse(str, str + len - 1);
}
int main(char* argc,int argv[])
{
char arr[] = "abcdef";
int k = 0;
scanf("%d",&k);
move(arr,2);
printf("%s\n",arr);
return 0;
}