C语言题目,求大神解答一下

五、计算题或案例分析题或其它题 1.写一个程序求一个整数从右边数起的第K位数字。 2. 用改进的冒泡法将20个数进行排序。 3.编写程序求1+2+3+。。。。+100的的和

1.写一个程序求一个整数从右边数起的第K位数字。

int n, k, i;

scanf("%d%d", &n, &k);

for (i = 1; i < k; ++i)

    n /= 10;

printf("The %dth digit is: %d\n", k, n % 10);

 

2. 用改进的冒泡法将20个数进行排序。

请详述改进的冒泡法。

 

3.编写程序求1+2+3+。。。。+100的的和

printf("%d\n"", 5050);

2的改进冒泡不知道具体怎么改进的。1和3代码如下,如有帮助,请采纳一下,谢谢。

#include <stdio.h>

//冒泡排序
void bubbleSort (int arr[], int len) 
{
	int temp;
	int i, j;
	for (i=0; i<len-1; i++) /* 外循环为排序趟数,len个数进行len-1趟 */
		for (j=0; j<len-1-i; j++) { /* 内循环为每趟比较的次数,第i趟比较len-i次 */
			if (arr[j] > arr[j+1]) { /* 相邻元素比较,若逆序则交换(升序为左大于右,降序反之) */
				temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
			}
		}
}

int main()
{
	//1.
	printf("请输入整数N和k的值:");
	int n,k;
	scanf("%d %d",&n,&k);
	for (int i = 1; i < k; i++)
	{
		n = n / 10;
	}
	int v = n % 10;
	printf("%d的从右侧起第k位数是%d\n",n,v);
	
	//2.冒泡排序
	int a[100] = {0};
	printf("请输入排序数组的大小:");
	scanf("%d",&n);
	printf("请输入%d个数:",n);
	for (int i = 0; i < n; i++)
	{
		scanf("%d",&a[i]);
	}

	//冒泡排序
	bubbleSort(a,n);
	printf("排序后的数组:\n");
	for (int i = 0; i < n; i++)
	{
		printf("%d ",a[i]);
	}
	printf("\n");


	//3.
	int sum = 0;
	for (int i = 1; i <= 100; i++)
	{
		sum += i;
	}
	printf("1+2+3+...+100=%d\n",sum);

	getchar();
	getchar();
	return 0;
}